]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
const srcPtrs
authorGeorge Lu <gclu@fb.com>
Tue, 7 Aug 2018 01:00:36 +0000 (18:00 -0700)
committerGeorge Lu <gclu@fb.com>
Thu, 9 Aug 2018 17:42:58 +0000 (10:42 -0700)
programs/bench.c
tests/paramgrill.c

index 49b31787006a71a093028999256b8b568e90cce6..874710c02e5763f02f80dce8268d8a7cfdf91439 100644 (file)
@@ -441,7 +441,7 @@ static BMK_return_t BMK_benchMemAdvancedNoAlloc(
     int displayLevel, const char* displayName, const BMK_advancedParams_t* adv) 
 {
     size_t const blockSize = ((adv->blockSize>=32 && (adv->mode != BMK_decodeOnly)) ? adv->blockSize : srcSize) + (!srcSize); /* avoid div by 0 */
-    BMK_return_t results = { { 0, 0., 0., 0 }, 0 } ;
+    BMK_return_t results = { { 0, 0, 0, 0 }, 0 } ;
     size_t const loadedCompressedSize = srcSize;
     size_t cSize = 0;
     double ratio = 0.;
index 5af3d88facecd396f3aa24c9771947df9dca4b30..5d1a730819269b33e46f365ddb096326d6833d6e 100644 (file)
@@ -250,6 +250,11 @@ static int feasible(const BMK_result_t results, const constraint_t target) {
 }
 
 /* hill climbing value for part 1 */
+/* Scoring here is a linear reward for all set constraints normalized between 0 to 1 
+ * (with 0 at 0 and 1 being fully fulfilling the constraint), summed with a logarithmic 
+ * bonus to exceeding the constraint value. We also give linear ratio for compression ratio.
+ * The constant factors are experimental. 
+ */
 static double resultScore(const BMK_result_t res, const size_t srcSize, const constraint_t target) {
     double cs = 0., ds = 0., rt, cm = 0.;
     const double r1 = 1, r2 = 0.1, rtr = 0.5;
@@ -291,7 +296,7 @@ const char* g_stratName[ZSTD_btultra+1] = {
                 "ZSTD_greedy  ", "ZSTD_lazy    ", "ZSTD_lazy2   ",
                 "ZSTD_btlazy2 ", "ZSTD_btopt   ", "ZSTD_btultra "};
 
-/* benchParam but only takes in one file. */
+/* benchParam but only takes in one input buffer. */
 static int
 BMK_benchParam1(BMK_result_t* resultPtr,
                const void* srcBuffer, size_t srcSize,
@@ -324,8 +329,9 @@ static winnerInfo_t initWinnerInfo(ZSTD_compressionParameters p) {
 }
 
 typedef struct {
+    void* srcBuffer;
     size_t srcSize;
-    void** srcPtrs;
+    const void** srcPtrs;
     size_t* srcSizes;
     void** dstPtrs;
     size_t* dstCapacities;
@@ -1605,7 +1611,7 @@ static winnerInfo_t optimizeFixedStrategy(
 
 static void freeBuffers(buffers_t b) {
     if(b.srcPtrs != NULL) {
-        free(b.srcPtrs[0]);
+        free(b.srcBuffer);
     }
     free(b.srcPtrs);
     free(b.srcSizes);
@@ -1635,7 +1641,7 @@ static int createBuffers(buffers_t* buff, const char* const * const fileNamesTab
     U32 const maxNbBlocks = (U32) ((totalSizeToLoad + (blockSize-1)) / blockSize) + (U32)nbFiles;
     U32 blockNb = 0;
 
-    buff->srcPtrs = (void**)calloc(maxNbBlocks, sizeof(void*));
+    buff->srcPtrs = (const void**)calloc(maxNbBlocks, sizeof(void*));
     buff->srcSizes = (size_t*)malloc(maxNbBlocks * sizeof(size_t));
 
     buff->dstPtrs = (void**)calloc(maxNbBlocks, sizeof(void*));
@@ -1651,7 +1657,8 @@ static int createBuffers(buffers_t* buff, const char* const * const fileNamesTab
         return 1;
     }
 
-    buff->srcPtrs[0] = malloc(benchedSize);
+    buff->srcBuffer = malloc(benchedSize);
+    buff->srcPtrs[0] = (const void*)buff->srcBuffer;
     buff->dstPtrs[0] = malloc(ZSTD_compressBound(benchedSize) + (maxNbBlocks * 1024));
     buff->resPtrs[0] = malloc(benchedSize);
 
@@ -1684,11 +1691,11 @@ static int createBuffers(buffers_t* buff, const char* const * const fileNamesTab
 
         if (fileSize + pos > benchedSize) fileSize = benchedSize - pos, nbFiles=n;   /* buffer too small - stop after this file */
         {
-            char* buffer = (char*)(buff->srcPtrs[0]); 
-            size_t const readSize = fread((buffer)+pos, 1, (size_t)fileSize, f);
+            char* buffer = (char*)(buff->srcBuffer); 
+            size_t const readSize = fread(((buffer)+pos), 1, (size_t)fileSize, f);
             size_t blocked = 0;
             while(blocked < readSize) {
-                buff->srcPtrs[blockNb] = (buffer) + (pos + blocked);
+                buff->srcPtrs[blockNb] = (const void*)((buffer) + (pos + blocked));
                 buff->srcSizes[blockNb] = blockSize;
                 blocked += blockSize;
                 blockNb++;