]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
bench.c: experimental -r (operate recursively on directories) for Windows and _POSIX_...
authorinikep <inikep@gmail.com>
Tue, 10 May 2016 12:22:55 +0000 (14:22 +0200)
committerinikep <inikep@gmail.com>
Tue, 10 May 2016 12:22:55 +0000 (14:22 +0200)
appveyor.yml
programs/bench.c
programs/bench.h
programs/dibio.c
programs/util.h
programs/zstdcli.c

index 93c8c930166fc6f6a98b06dc810213eb46f63cf5..df8d1557207a25771971f5534659555b730984e0 100644 (file)
@@ -7,7 +7,7 @@ platform:
 - x64
 environment:
   matrix:
-  - PlatformToolset: v100
+# - PlatformToolset: v100
   - PlatformToolset: v110
   - PlatformToolset: v120
   - PlatformToolset: v140
index 4a3a4b6e180904946da286f744a097d4f0700831..f97e9bb98ccf5ef1cf6467f7a389381c8ff57509 100644 (file)
@@ -26,7 +26,7 @@
 /* *************************************
 *  Includes
 ***************************************/
-#include "util.h"        /* Compiler options, UTIL_GetFileSize, UTIL_createFileList, UTIL_sleep */
+#include "util.h"        /* Compiler options, UTIL_GetFileSize, UTIL_HAS_CREATEFILELIST, UTIL_sleep */
 #include <stdlib.h>      /* malloc, free */
 #include <string.h>      /* memset */
 #include <stdio.h>       /* fprintf, fopen, ftello64 */
@@ -501,7 +501,7 @@ static void BMK_syntheticTest(int cLevel, int cLevelLast, double compressibility
 
 
 int BMK_benchFiles(const char** fileNamesTable, unsigned nbFiles,
-                   const char* dictFileName, int cLevel, int cLevelLast)
+                   const char* dictFileName, int cLevel, int cLevelLast, int recursive)
 {
     double const compressibility = (double)g_compressibilityDefault / 100;
 
@@ -510,15 +510,18 @@ int BMK_benchFiles(const char** fileNamesTable, unsigned nbFiles,
     else
     {
 #ifdef UTIL_HAS_CREATEFILELIST
-        char* buf;
-        const char** filenameTable;
-        unsigned i;
-        nbFiles = UTIL_createFileList(fileNamesTable, nbFiles, MAX_LIST_SIZE, &filenameTable, &buf);
-        if (filenameTable) {
-            for (i=0; i<nbFiles; i++) DISPLAYLEVEL(3, "%d %s\n", i, filenameTable[i]);
-            BMK_benchFileTable(filenameTable, nbFiles, dictFileName, cLevel, cLevelLast);
-            UTIL_freeFileList(filenameTable, buf);
+        if (recursive) {
+            char* buf;
+            const char** filenameTable;
+            unsigned i;
+            nbFiles = UTIL_createFileList(fileNamesTable, nbFiles, MAX_LIST_SIZE, &filenameTable, &buf);
+            if (filenameTable) {
+                for (i=0; i<nbFiles; i++) DISPLAYLEVEL(3, "%d %s\n", i, filenameTable[i]);
+                BMK_benchFileTable(filenameTable, nbFiles, dictFileName, cLevel, cLevelLast);
+                UTIL_freeFileList(filenameTable, buf);
+            }
         }
+        else BMK_benchFileTable(fileNamesTable, nbFiles, dictFileName, cLevel, cLevelLast);
 #else
         BMK_benchFileTable(fileNamesTable, nbFiles, dictFileName, cLevel, cLevelLast);
 #endif
index 74ac20f9aedff92147680cba47f8f5629df3b23e..9acac071d305d67f115281a4f2a6279340381b7c 100644 (file)
@@ -26,7 +26,7 @@
 
 /* Main function */
 int BMK_benchFiles(const char** fileNamesTable, unsigned nbFiles,
-                   const char* dictFileName, int cLevel, int cLevelLast);
+                   const char* dictFileName, int cLevel, int cLevelLast, int recursive);
 
 /* Set Parameters */
 void BMK_SetNbIterations(unsigned nbLoops);
index 2804372b78464cb09a25f9a7664090b4e6655833..23f3c817637a3e2330d30574a49d190c59341993 100644 (file)
@@ -29,6 +29,7 @@
 #include <stdlib.h>         /* malloc, free */
 #include <string.h>         /* memset */
 #include <stdio.h>          /* fprintf, fopen, ftello64 */
+#include <time.h>           /* clock_t, clock, CLOCKS_PER_SEC */
 
 #include "mem.h"            /* read */
 #include "error_private.h"
index 25eb31d22a8ad9f9aa7bf4e1055cc30fa856554d..7f7384383fdb9bb21a0a3515ee14bcb36ed324a9 100644 (file)
@@ -85,7 +85,7 @@ extern "C" {
 #  define SET_HIGH_PRIORITY SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS)
 #  define UTIL_sleep(s) Sleep(1000*s)
 #  define UTIL_sleepMilli(milli) Sleep(milli)
-#elif (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)))
+#elif (defined(__unix__) || defined(__unix) || defined(__midipix__) || (defined(__APPLE__) && defined(__MACH__))) 
 #  include <unistd.h>
 #  include <sys/resource.h> /* setpriority */
 #  include <time.h>         /* clock_t, nanosleep, clock, CLOCKS_PER_SEC */
@@ -255,7 +255,7 @@ next:
     return nbFiles;
 }
 
-#elif (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__))) && defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L) /* snprintf, opendir */
+#elif (defined(__unix__) || defined(__unix) || defined(__midipix__) || (defined(__APPLE__) && defined(__MACH__))) && defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L) /* snprintf, opendir */
 #  define UTIL_HAS_CREATEFILELIST
 #  include <dirent.h>       /* opendir, readdir */
 #  include <limits.h>       /* PATH_MAX */
index 98e6c0d3a71ac27bb457099dcd22f6e4fde044e6..5d00e81d5028cdf1c1a284a56083b2e09143bdda 100644 (file)
 /*-************************************
 *  Compiler Options
 **************************************/
-#define _CRT_SECURE_NO_WARNINGS  /* Visual : removes warning from strcpy */
 #define _POSIX_SOURCE 1          /* triggers fileno() within <stdio.h> on unix */
 
 
 /*-************************************
 *  Includes
 **************************************/
-#include <stdio.h>    /* fprintf, getchar */
-#include <stdlib.h>   /* exit, calloc, free */
+#include "util.h"     /* Compiler options, UTIL_HAS_CREATEFILELIST */
 #include <string.h>   /* strcmp, strlen */
 #include <ctype.h>    /* toupper */
 #include "fileio.h"
@@ -48,7 +46,7 @@
 #endif
 #include "zstd_static.h" /* ZSTD_maxCLevel, ZSTD version numbers  */
 #ifndef ZSTD_NODICT
-#  include "dibio.h"  /* BMK_benchFiles, BMK_SetNbIterations */
+#  include "dibio.h"
 #endif
 
 
@@ -148,8 +146,11 @@ static int usage_advanced(const char* programName)
 #ifndef ZSTD_NOBENCH
     DISPLAY( "Benchmark arguments :\n");
     DISPLAY( " -b#    : benchmark file(s), using # compression level (default : 1) \n");
-    DISPLAY( " -r#    : test all compression levels from -bX to # (default: 1)\n");
+    DISPLAY( " -e#    : test all compression levels from -bX to # (default: 1)\n");
     DISPLAY( " -i#    : iteration loops [1-9](default : 3)\n");
+#ifdef UTIL_HAS_CREATEFILELIST
+    DISPLAY( " -r     : operate recursively on directories\n");
+#endif
     DISPLAY( " -B#    : cut file into independent blocks of size # (default: no block)\n");
 #endif
     return 0;
@@ -188,6 +189,7 @@ int main(int argCount, const char** argv)
         nextArgumentIsMaxDict=0;
     unsigned cLevel = 1;
     unsigned cLevelLast = 1;
+    unsigned recursive = 0;
     const char** filenameTable = (const char**)malloc(argCount * sizeof(const char*));   /* argCount >= 1 */
     unsigned filenameIdx = 0;
     const char* programName = argv[0];
@@ -199,7 +201,7 @@ int main(int argCount, const char** argv)
     unsigned dictSelect = g_defaultSelectivityLevel;
 
     /* init */
-    (void)cLevelLast; (void)dictCLevel;   /* not used when ZSTD_NOBENCH / ZSTD_NODICT set */
+    (void)recursive; (void)cLevelLast; (void)dictCLevel;   /* not used when ZSTD_NOBENCH / ZSTD_NODICT set */
     (void)decode; (void)cLevel; /* not used when ZSTD_NOCOMPRESS set */
     if (filenameTable==NULL) { DISPLAY("not enough memory\n"); exit(1); }
     displayOut = stderr;
@@ -294,6 +296,17 @@ int main(int argCount, const char** argv)
                     /* Benchmark */
                 case 'b': bench=1; argument++; break;
 
+                    /* range bench (benchmark only) */
+                case 'e':
+                        /* compression Level */
+                        argument++;
+                        if ((*argument>='0') && (*argument<='9')) {
+                            cLevelLast = 0;
+                            while ((*argument >= '0') && (*argument <= '9'))
+                                cLevelLast *= 10, cLevelLast += *argument++ - '0';
+                        }
+                        break;
+
                     /* Modify Nb Iterations (benchmark only) */
                 case 'i':
                     {   U32 iters= 0;
@@ -305,6 +318,9 @@ int main(int argCount, const char** argv)
                     }
                     break;
 
+                    /* recursive */
+                case 'r': recursive=1; argument++; break;
+
                     /* cut input into blocks (benchmark only) */
                 case 'B':
                     {   size_t bSize = 0;
@@ -318,17 +334,6 @@ int main(int argCount, const char** argv)
                         BMK_SetBlockSize(bSize);
                     }
                     break;
-
-                    /* range bench (benchmark only) */
-                case 'r':
-                        /* compression Level */
-                        argument++;
-                        if ((*argument>='0') && (*argument<='9')) {
-                            cLevelLast = 0;
-                            while ((*argument >= '0') && (*argument <= '9'))
-                                cLevelLast *= 10, cLevelLast += *argument++ - '0';
-                        }
-                        break;
 #endif   /* ZSTD_NOBENCH */
 
                     /* Selection level */
@@ -390,7 +395,7 @@ int main(int argCount, const char** argv)
     if (bench) {
 #ifndef ZSTD_NOBENCH
         BMK_setNotificationLevel(displayLevel);
-        BMK_benchFiles(filenameTable, filenameIdx, dictFileName, cLevel, cLevelLast);
+        BMK_benchFiles(filenameTable, filenameIdx, dictFileName, cLevel, cLevelLast, recursive);
 #endif
         goto _end;
     }