diff --git a/programs/bench.c b/programs/bench.c index 4059072f..6009ebc7 100644 --- a/programs/bench.c +++ b/programs/bench.c @@ -96,6 +96,7 @@ static U32 g_nbSeconds = NBSECONDS; static size_t g_blockSize = 0; static int g_additionalParam = 0; static U32 g_decodeOnly = 0; +static U32 g_nbThreads = 1; void BMK_setNotificationLevel(unsigned level) { g_displayLevel=level; } @@ -113,7 +114,9 @@ void BMK_SetBlockSize(size_t blockSize) DISPLAYLEVEL(2, "using blocks of size %u KB \n", (U32)(blockSize>>10)); } -void BMK_setDecodeOnly(unsigned decodeFlag) { g_decodeOnly = (decodeFlag>0); } +void BMK_setDecodeOnlyMode(unsigned decodeFlag) { g_decodeOnly = (decodeFlag>0); } + +void BMK_SetNbThreads(unsigned nbThreads) { g_nbThreads = nbThreads; } /* ******************************************************** @@ -156,7 +159,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, U32 nbBlocks; UTIL_time_t ticksPerSecond; - ZSTDMT_CCtx* const mtcctx = ZSTDMT_createCCtx(1); + ZSTDMT_CCtx* const mtcctx = ZSTDMT_createCCtx(g_nbThreads); /* checks */ if (!compressedBuffer || !resultBuffer || !blockTable || !ctx || !dctx) diff --git a/programs/bench.h b/programs/bench.h index 314f3465..87850bcc 100644 --- a/programs/bench.h +++ b/programs/bench.h @@ -15,14 +15,15 @@ #define ZSTD_STATIC_LINKING_ONLY /* ZSTD_compressionParameters */ #include "zstd.h" /* ZSTD_compressionParameters */ -int BMK_benchFiles(const char** fileNamesTable, unsigned nbFiles,const char* dictFileName, +int BMK_benchFiles(const char** fileNamesTable, unsigned nbFiles,const char* dictFileName, int cLevel, int cLevelLast, ZSTD_compressionParameters* compressionParams); /* Set Parameters */ void BMK_SetNbSeconds(unsigned nbLoops); void BMK_SetBlockSize(size_t blockSize); -void BMK_setAdditionalParam(int additionalParam); +void BMK_SetNbThreads(unsigned nbThreads); void BMK_setNotificationLevel(unsigned level); -void BMK_setDecodeOnly(unsigned decodeFlag); +void BMK_setAdditionalParam(int additionalParam); +void BMK_setDecodeOnlyMode(unsigned decodeFlag); #endif /* BENCH_H_121279284357 */ diff --git a/programs/zstdcli.c b/programs/zstdcli.c index 978ffcfe..03ad1ac7 100644 --- a/programs/zstdcli.c +++ b/programs/zstdcli.c @@ -352,7 +352,7 @@ int main(int argCount, const char* argv[]) /* Decoding */ case 'd': #ifndef ZSTD_NOBENCH - if (operation==zom_bench) { BMK_setDecodeOnly(1); argument++; break; } /* benchmark decode (hidden option) */ + if (operation==zom_bench) { BMK_setDecodeOnlyMode(1); argument++; break; } /* benchmark decode (hidden option) */ #endif operation=zom_decompress; argument++; break; @@ -430,6 +430,12 @@ int main(int argCount, const char* argv[]) dictSelect = readU32FromChar(&argument); break; + /* nb of threads (hidden option) */ + case 'T': + argument++; + BMK_SetNbThreads(readU32FromChar(&argument)); + break; + /* Pause at the end (-p) or set an additional param (-p#) (hidden option) */ case 'p': argument++; #ifndef ZSTD_NOBENCH