mirror of
https://github.com/isar/libmdbx.git
synced 2025-02-01 04:08:21 +08:00
mdbx-test: minor refine comments & keygen-params ranges.
Change-Id: I8ebb0647d4d5a8637d57a39e9ddee4727bffb18f
This commit is contained in:
parent
ffa29f9466
commit
7f920b5cfc
@ -124,7 +124,8 @@ inline bool parse_option_intptr(int argc, char *const argv[], int &narg,
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct keygen_params_pod {
|
||||
/* Параметры генератора пар key-value.
|
||||
/* Параметры генератора пар key-value. Также может быть полезным описание
|
||||
* алгоритма генерации в keygen.h
|
||||
*
|
||||
* Ключи и значения генерируются по задаваемым параметрам на основе "плоской"
|
||||
* исходной координаты. При этом, в общем случае, в процессе тестов исходная
|
||||
@ -146,15 +147,15 @@ struct keygen_params_pod {
|
||||
* данных не анализируется движком и не оказывает влияния на его работу.
|
||||
* - Для таблиц "с дубликатами", при наличии более одного значения для
|
||||
* некоторого ключа, формируется дочернее btree-поддерево. Это дерево
|
||||
* формируется в отдельном "кусте" страниц и обслуживается независимо
|
||||
* от окружения родительского ключа.
|
||||
* формируется во вложенной странице или отдельном "кусте" страниц,
|
||||
* и обслуживается независимо от окружения родительского ключа.
|
||||
* - Таким образом, паттерн генерации значений имеет смысл только для
|
||||
* таблиц "с дубликатами" и только в контексте одного значения ключа.
|
||||
* Иначе говоря, нет смысла в со-координации генерации паттернов для
|
||||
* ключей и значений. Более того, генерацию значений всегда необходимо
|
||||
* рассматривать в контексте связки с одним значением ключа.
|
||||
* - Тем не менее, во всех случаях достаточно важным является равномерная
|
||||
* всех возможных сочетаний длин ключей и данных.
|
||||
* Иначе говоря, не имеет смысла взаимная координация при генерации
|
||||
* значений для разных ключей. Поэтому генерацию значений следует
|
||||
* рассматривать только в контексте связки с одним значением ключа.
|
||||
* - Тем не менее, во всех случаях достаточно важным является равновероятное
|
||||
* распределение всех возможных сочетаний длин ключей и данных.
|
||||
*
|
||||
* width:
|
||||
* Большинство тестов предполагают создание или итерирование некоторого
|
||||
@ -166,7 +167,7 @@ struct keygen_params_pod {
|
||||
* степени двойки. Это ограничение можно снять, но ценой увеличения
|
||||
* вычислительной сложности, включая потерю простоты и прозрачности.
|
||||
*
|
||||
* С другой стороны, не-битовый width может быть полезен:
|
||||
* С другой стороны, не-n-битовый width может быть полезен:
|
||||
* - Позволит генерировать ключи/значения в точно задаваемом диапазоне.
|
||||
* Например, перебрать в псевдо-случайном порядке 10001 значение.
|
||||
* - Позволит поровну разделять заданное пространство (диапазон)
|
||||
@ -203,7 +204,7 @@ struct keygen_params_pod {
|
||||
* rotate и offset:
|
||||
* Для проверки слияния и разделения страниц внутри движка требуются
|
||||
* генерация ключей/значений в виде не-смежных последовательностей, как-бы
|
||||
* в виде "пунктира", который постепенно заполняет весь заданных диапазон.
|
||||
* в виде "пунктира", который постепенно заполняет весь заданный диапазон.
|
||||
*
|
||||
* Параметры позволяют генерировать такой "пунктир". Соответственно rotate
|
||||
* задает циклический сдвиг вправо, а offset задает смещение, точнее говоря
|
||||
|
@ -23,9 +23,8 @@ namespace keygen {
|
||||
|
||||
/* Под "генерацией ключей" здесь понимается генерация обоих значений для
|
||||
* пар key-value, т.е. не только ключей, но и ассоциированных с ними данных.
|
||||
*/
|
||||
|
||||
/* Генерацию ключей нельзя отнести к простым задачам, так как требования
|
||||
*
|
||||
* Генерацию ключей нельзя отнести к простым задачам, так как требования
|
||||
* примерно следующие:
|
||||
* - генерация разного количества уникальных ключей различной длины
|
||||
* в задаваемом диапазоне;
|
||||
@ -67,7 +66,8 @@ namespace keygen {
|
||||
* 1) смещение (сложение) по модулю;
|
||||
* 2) циклический сдвиг;
|
||||
* 3) добавление абсолютного смещения (базы);
|
||||
*/
|
||||
*
|
||||
* Также см. описание параметров генератора ключей и значений в config.h */
|
||||
|
||||
typedef uint64_t serial_t;
|
||||
|
||||
|
@ -323,10 +323,10 @@ int main(int argc, char *const argv[]) {
|
||||
continue;
|
||||
|
||||
if (config::parse_option(argc, argv, narg, "keygen.width",
|
||||
params.keygen.width, 1, 64))
|
||||
params.keygen.width, 8, 64))
|
||||
continue;
|
||||
if (config::parse_option(argc, argv, narg, "keygen.mesh",
|
||||
params.keygen.mesh, 1, 64))
|
||||
params.keygen.mesh, 0, 64))
|
||||
continue;
|
||||
if (config::parse_option(argc, argv, narg, "keygen.seed",
|
||||
params.keygen.seed, config::no_scale))
|
||||
@ -335,10 +335,10 @@ int main(int argc, char *const argv[]) {
|
||||
params.keygen.zero_fill))
|
||||
continue;
|
||||
if (config::parse_option(argc, argv, narg, "keygen.split",
|
||||
params.keygen.split, 1, 64))
|
||||
params.keygen.split, 0, 63))
|
||||
continue;
|
||||
if (config::parse_option(argc, argv, narg, "keygen.rotate",
|
||||
params.keygen.rotate, 1, 64))
|
||||
params.keygen.rotate, 0, 63))
|
||||
continue;
|
||||
if (config::parse_option(argc, argv, narg, "keygen.offset",
|
||||
params.keygen.offset, config::binary))
|
||||
|
Loading…
x
Reference in New Issue
Block a user