From 1d487d587f3a8964e274ecd5062150c24deea98e Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Tue, 4 Sep 2018 14:57:45 -0700 Subject: [PATCH] updated documentation --- contrib/largeNbDicts/README.md | 22 ++++++++++++++-------- contrib/largeNbDicts/largeNbDicts.c | 26 ++++++++++++++++++-------- 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/contrib/largeNbDicts/README.md b/contrib/largeNbDicts/README.md index 7eba229a9..f29bcdfe8 100644 --- a/contrib/largeNbDicts/README.md +++ b/contrib/largeNbDicts/README.md @@ -3,17 +3,23 @@ largeNbDicts `largeNbDicts` is a benchmark test tool dedicated to the specific scenario of -dictionary decompression using a very large number of dictionaries, -which suffers from increased latency due to cache misses. -It's created in a bid to investigate performance for this scenario, +dictionary decompression using a very large number of dictionaries. +When dictionaries are constantly changing, they are always "cold", +suffering from increased latency due to cache misses. + +The tool is created in a bid to investigate performance for this scenario, and experiment mitigation techniques. Command line : ``` -$ largeNbDicts filename [Options] +largeNbDicts [Options] filename(s) + Options : ---clevel=# : use compression level # (default: 3) ---blockSize=# : cut input into blocks of size # (default: 4096) ---dictionary=# : use # as a dictionary (default: create one) ---nbDicts=# : set nb of dictionaries to # (default: one per block) +-r : recursively load all files in subdirectories (default: off) +-B# : split input into blocks of size # (default: no split) +-# : use compression level # (default: 3) +-D # : use # as a dictionary (default: create one) +-i# : nb benchmark rounds (default: 6) +--nbDicts=# : set nb of dictionaries to # (default: one per block) +-h : help (this text) ``` diff --git a/contrib/largeNbDicts/largeNbDicts.c b/contrib/largeNbDicts/largeNbDicts.c index 943a644d6..21fbd2aa5 100644 --- a/contrib/largeNbDicts/largeNbDicts.c +++ b/contrib/largeNbDicts/largeNbDicts.c @@ -716,17 +716,26 @@ static unsigned longCommandWArg(const char** stringPtr, const char* longCommand) } +int usage(const char* exeName) +{ + DISPLAY (" \n"); + DISPLAY (" %s [Options] filename(s) \n", exeName); + DISPLAY (" \n"); + DISPLAY ("Options : \n"); + DISPLAY ("-r : recursively load all files in subdirectories (default: off) \n"); + DISPLAY ("-B# : split input into blocks of size # (default: no split) \n"); + DISPLAY ("-# : use compression level # (default: %u) \n", CLEVEL_DEFAULT); + DISPLAY ("-D # : use # as a dictionary (default: create one) \n"); + DISPLAY ("-i# : nb benchmark rounds (default: %u) \n", BENCH_TIME_DEFAULT_S); + DISPLAY ("--nbDicts=# : create # dictionaries for bench (default: one per block) \n"); + DISPLAY ("-h : help (this text) \n"); + return 0; +} + int bad_usage(const char* exeName) { DISPLAY (" bad usage : \n"); - DISPLAY (" %s filename [Options] \n", exeName); - DISPLAY ("Options : \n"); - DISPLAY ("-r : recursively load all files in subdirectories (default: off) \n"); - DISPLAY ("-B# : split input into blocks of size # (default: no split) \n"); - DISPLAY ("-# : use compression level # (default: %u) \n", CLEVEL_DEFAULT); - DISPLAY ("-D # : use # as a dictionary (default: create one) \n"); - DISPLAY ("-i# : nb benchmark rounds (default: %u) \n", BENCH_TIME_DEFAULT_S); - DISPLAY ("--nbDicts=# : create # dictionaries for bench (default: one per block) \n"); + usage(exeName); return 1; } @@ -749,6 +758,7 @@ int main (int argc, const char** argv) for (int argNb = 1; argNb < argc ; argNb++) { const char* argument = argv[argNb]; + if (!strcmp(argument, "-h")) { return usage(exeName); } if (!strcmp(argument, "-r")) { recursiveMode = 1; continue; } if (!strcmp(argument, "-D")) { argNb++; assert(argNb < argc); dictionary = argv[argNb]; continue; } if (longCommandWArg(&argument, "-i")) { nbRounds = readU32FromChar(&argument); continue; }