@@ -577,11 +577,12 @@ typedef struct {
577577 cdict_collection_t dictionaries ;
578578} compressInstructions ;
579579
580- compressInstructions createCompressInstructions (cdict_collection_t dictionaries )
580+ compressInstructions createCompressInstructions (cdict_collection_t dictionaries , ZSTD_CCtx_params * cctxParams )
581581{
582582 compressInstructions ci ;
583583 ci .cctx = ZSTD_createCCtx ();
584584 CONTROL (ci .cctx != NULL );
585+ ZSTD_CCtx_setParametersUsingCCtxParams (ci .cctx , cctxParams );
585586 ci .nbDicts = dictionaries .nbCDict ;
586587 ci .dictNb = 0 ;
587588 ci .dictionaries = dictionaries ;
@@ -622,10 +623,10 @@ size_t compress(const void* src, size_t srcSize, void* dst, size_t dstCapacity,
622623 compressInstructions * const ci = (compressInstructions * ) payload ;
623624 (void )dstCapacity ;
624625
625- ZSTD_compress_usingCDict (ci -> cctx ,
626- dst , srcSize ,
627- src , srcSize ,
628- ci -> dictionaries . cdicts [ ci -> dictNb ] );
626+ ZSTD_CCtx_refCDict (ci -> cctx , ci -> dictionaries . cdicts [ ci -> dictNb ]);
627+ ZSTD_compress2 ( ci -> cctx ,
628+ dst , srcSize ,
629+ src , srcSize );
629630
630631 ci -> dictNb = ci -> dictNb + 1 ;
631632 if (ci -> dictNb >= ci -> nbDicts ) ci -> dictNb = 0 ;
@@ -654,9 +655,11 @@ static int benchMem(slice_collection_t dstBlocks,
654655 slice_collection_t srcBlocks ,
655656 ddict_collection_t ddictionaries ,
656657 cdict_collection_t cdictionaries ,
657- unsigned nbRounds , int benchCompression )
658+ unsigned nbRounds , int benchCompression ,
659+ const char * exeName , ZSTD_CCtx_params * cctxParams )
658660{
659661 assert (dstBlocks .nbSlices == srcBlocks .nbSlices );
662+ if (benchCompression ) assert (cctxParams );
660663
661664 unsigned const ms_per_round = RUN_TIME_DEFAULT_MS ;
662665 unsigned const total_time_ms = nbRounds * ms_per_round ;
@@ -667,7 +670,7 @@ static int benchMem(slice_collection_t dstBlocks,
667670 BMK_createTimedFnState (total_time_ms , ms_per_round );
668671
669672 decompressInstructions di = createDecompressInstructions (ddictionaries );
670- compressInstructions ci = createCompressInstructions (cdictionaries );
673+ compressInstructions ci = createCompressInstructions (cdictionaries , cctxParams );
671674 void * payload = benchCompression ? (void * )& ci : (void * )& di ;
672675 BMK_benchParams_t const bp = {
673676 .benchFn = benchCompression ? compress : decompress ,
@@ -703,6 +706,23 @@ static int benchMem(slice_collection_t dstBlocks,
703706 }
704707 DISPLAY ("\n" );
705708
709+ char * csvFileName = malloc (strlen (exeName ) + 5 );
710+ strcpy (csvFileName , exeName );
711+ strcat (csvFileName , ".csv" );
712+ FILE * csvFile = fopen (csvFileName , "r" );
713+ if (!csvFile ) {
714+ csvFile = fopen (csvFileName , "wt" );
715+ assert (csvFile );
716+ fprintf (csvFile , "%s\n" , exeName );
717+ } else {
718+ fclose (csvFile );
719+ csvFile = fopen (csvFileName , "at" );
720+ assert (csvFile );
721+ }
722+ fprintf (csvFile , "%.1f\n" , bestSpeed );
723+ fclose (csvFile );
724+ free (csvFileName );
725+
706726 freeDecompressInstructions (di );
707727 freeCompressInstructions (ci );
708728 BMK_freeTimedFnState (benchState );
@@ -721,7 +741,8 @@ int bench(const char** fileNameTable, unsigned nbFiles,
721741 size_t blockSize , int clevel ,
722742 unsigned nbDictMax , unsigned nbBlocks ,
723743 unsigned nbRounds , int benchCompression ,
724- ZSTD_dictContentType_e dictContentType , ZSTD_CCtx_params * cctxParams )
744+ ZSTD_dictContentType_e dictContentType , ZSTD_CCtx_params * cctxParams ,
745+ const char * exeName )
725746{
726747 int result = 0 ;
727748
@@ -806,7 +827,7 @@ int bench(const char** fileNameTable, unsigned nbFiles,
806827 CONTROL (ddictionaries .ddicts != NULL );
807828
808829 if (benchCompression ) {
809- size_t const dictMem = ZSTD_estimateCDictSize ( dictBuffer . size , DICT_LOAD_METHOD );
830+ size_t const dictMem = ZSTD_sizeof_CDict ( cdictionaries . cdicts [ 0 ] );
810831 size_t const allDictMem = dictMem * nbDicts ;
811832 DISPLAYLEVEL (3 , "generating %u dictionaries, using %.1f MB of memory \n" ,
812833 nbDicts , (double )allDictMem / (1 MB ));
@@ -816,7 +837,7 @@ int bench(const char** fileNameTable, unsigned nbFiles,
816837 buffer_collection_t resultCollection = createBufferCollection_fromSliceCollection (srcSlices );
817838 CONTROL (resultCollection .buffer .ptr != NULL );
818839
819- result = benchMem (dstSlices , resultCollection .slices , ddictionaries , cdictionaries , nbRounds , benchCompression );
840+ result = benchMem (dstSlices , resultCollection .slices , ddictionaries , cdictionaries , nbRounds , benchCompression , exeName , cctxParams );
820841
821842 freeBufferCollection (resultCollection );
822843 } else {
@@ -830,7 +851,7 @@ int bench(const char** fileNameTable, unsigned nbFiles,
830851 buffer_collection_t resultCollection = createBufferCollection_fromSliceCollectionSizes (srcSlices );
831852 CONTROL (resultCollection .buffer .ptr != NULL );
832853
833- result = benchMem (resultCollection .slices , dstSlices , ddictionaries , cdictionaries , nbRounds , benchCompression );
854+ result = benchMem (resultCollection .slices , dstSlices , ddictionaries , cdictionaries , nbRounds , benchCompression , exeName , NULL );
834855
835856 freeBufferCollection (resultCollection );
836857 }
@@ -988,7 +1009,7 @@ int main (int argc, const char** argv)
9881009 ZSTD_CCtxParams_setParameter (cctxParams , ZSTD_c_nbWorkers , 0 );
9891010 ZSTD_CCtxParams_setParameter (cctxParams , ZSTD_c_forceAttachDict , dictAttachPref );
9901011
991- int result = bench (filenameTable -> fileNames , (unsigned )filenameTable -> tableSize , dictionary , blockSize , cLevel , nbDicts , nbBlocks , nbRounds , benchCompression , dictContentType , cctxParams );
1012+ int result = bench (filenameTable -> fileNames , (unsigned )filenameTable -> tableSize , dictionary , blockSize , cLevel , nbDicts , nbBlocks , nbRounds , benchCompression , dictContentType , cctxParams , exeName );
9921013
9931014 UTIL_freeFileNamesTable (filenameTable );
9941015 free (nameTable );
0 commit comments