mirror of
https://github.com/facebook/zstd.git
synced 2025-07-29 11:21:22 +03:00
simplified BMK_benchFilesAdvanced()
This commit is contained in:
@ -794,7 +794,7 @@ static int BMK_loadFiles(void* buffer, size_t bufferSize,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
BMK_benchOutcome_t BMK_benchFilesAdvanced(
|
int BMK_benchFilesAdvanced(
|
||||||
const char* const * fileNamesTable, unsigned nbFiles,
|
const char* const * fileNamesTable, unsigned nbFiles,
|
||||||
const char* dictFileName, int cLevel,
|
const char* dictFileName, int cLevel,
|
||||||
const ZSTD_compressionParameters* compressionParams,
|
const ZSTD_compressionParameters* compressionParams,
|
||||||
@ -809,19 +809,25 @@ BMK_benchOutcome_t BMK_benchFilesAdvanced(
|
|||||||
U64 const totalSizeToLoad = UTIL_getTotalFileSize(fileNamesTable, nbFiles);
|
U64 const totalSizeToLoad = UTIL_getTotalFileSize(fileNamesTable, nbFiles);
|
||||||
|
|
||||||
if (!nbFiles) {
|
if (!nbFiles) {
|
||||||
RETURN_ERROR(14, BMK_benchOutcome_t, "No Files to Benchmark");
|
DISPLAYLEVEL(1, "No Files to Benchmark");
|
||||||
|
return 13;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cLevel > ZSTD_maxCLevel()) {
|
if (cLevel > ZSTD_maxCLevel()) {
|
||||||
RETURN_ERROR(15, BMK_benchOutcome_t, "Invalid Compression Level");
|
DISPLAYLEVEL(1, "Invalid Compression Level");
|
||||||
|
return 14;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (totalSizeToLoad == UTIL_FILESIZE_UNKNOWN) {
|
if (totalSizeToLoad == UTIL_FILESIZE_UNKNOWN) {
|
||||||
RETURN_ERROR(9, BMK_benchOutcome_t, "Error loading files");
|
DISPLAYLEVEL(1, "Error loading files");
|
||||||
|
return 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
fileSizes = (size_t*)calloc(nbFiles, sizeof(size_t));
|
fileSizes = (size_t*)calloc(nbFiles, sizeof(size_t));
|
||||||
if (!fileSizes) RETURN_ERROR(12, BMK_benchOutcome_t, "not enough memory for fileSizes");
|
if (!fileSizes) {
|
||||||
|
DISPLAYLEVEL(1, "not enough memory for fileSizes");
|
||||||
|
return 16;
|
||||||
|
}
|
||||||
|
|
||||||
/* Load dictionary */
|
/* Load dictionary */
|
||||||
if (dictFileName != NULL) {
|
if (dictFileName != NULL) {
|
||||||
@ -829,18 +835,21 @@ BMK_benchOutcome_t BMK_benchFilesAdvanced(
|
|||||||
if (dictFileSize == UTIL_FILESIZE_UNKNOWN) {
|
if (dictFileSize == UTIL_FILESIZE_UNKNOWN) {
|
||||||
DISPLAYLEVEL(1, "error loading %s : %s \n", dictFileName, strerror(errno));
|
DISPLAYLEVEL(1, "error loading %s : %s \n", dictFileName, strerror(errno));
|
||||||
free(fileSizes);
|
free(fileSizes);
|
||||||
RETURN_ERROR(9, BMK_benchOutcome_t, "benchmark aborted");
|
DISPLAYLEVEL(1, "benchmark aborted");
|
||||||
|
return 17;
|
||||||
}
|
}
|
||||||
if (dictFileSize > 64 MB) {
|
if (dictFileSize > 64 MB) {
|
||||||
free(fileSizes);
|
free(fileSizes);
|
||||||
RETURN_ERROR(10, BMK_benchOutcome_t, "dictionary file %s too large", dictFileName);
|
DISPLAYLEVEL(1, "dictionary file %s too large", dictFileName);
|
||||||
|
return 18;
|
||||||
}
|
}
|
||||||
dictBufferSize = (size_t)dictFileSize;
|
dictBufferSize = (size_t)dictFileSize;
|
||||||
dictBuffer = malloc(dictBufferSize);
|
dictBuffer = malloc(dictBufferSize);
|
||||||
if (dictBuffer==NULL) {
|
if (dictBuffer==NULL) {
|
||||||
free(fileSizes);
|
free(fileSizes);
|
||||||
RETURN_ERROR(11, BMK_benchOutcome_t, "not enough memory for dictionary (%u bytes)",
|
DISPLAYLEVEL(1, "not enough memory for dictionary (%u bytes)",
|
||||||
(unsigned)dictBufferSize);
|
(unsigned)dictBufferSize);
|
||||||
|
return 19;
|
||||||
}
|
}
|
||||||
|
|
||||||
{ int const errorCode = BMK_loadFiles(dictBuffer, dictBufferSize,
|
{ int const errorCode = BMK_loadFiles(dictBuffer, dictBufferSize,
|
||||||
@ -862,7 +871,8 @@ BMK_benchOutcome_t BMK_benchFilesAdvanced(
|
|||||||
if (!srcBuffer) {
|
if (!srcBuffer) {
|
||||||
free(dictBuffer);
|
free(dictBuffer);
|
||||||
free(fileSizes);
|
free(fileSizes);
|
||||||
RETURN_ERROR(12, BMK_benchOutcome_t, "not enough memory");
|
DISPLAYLEVEL(1, "not enough memory for srcBuffer");
|
||||||
|
return 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load input buffer */
|
/* Load input buffer */
|
||||||
@ -890,12 +900,11 @@ _cleanUp:
|
|||||||
free(srcBuffer);
|
free(srcBuffer);
|
||||||
free(dictBuffer);
|
free(dictBuffer);
|
||||||
free(fileSizes);
|
free(fileSizes);
|
||||||
return res;
|
return !BMK_isSuccessful_benchOutcome(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BMK_benchOutcome_t BMK_benchFiles(
|
int BMK_benchFiles(const char* const * fileNamesTable, unsigned nbFiles,
|
||||||
const char* const * fileNamesTable, unsigned nbFiles,
|
|
||||||
const char* dictFileName,
|
const char* dictFileName,
|
||||||
int cLevel, const ZSTD_compressionParameters* compressionParams,
|
int cLevel, const ZSTD_compressionParameters* compressionParams,
|
||||||
int displayLevel)
|
int displayLevel)
|
||||||
|
@ -81,21 +81,13 @@ BMK_benchResult_t BMK_extract_benchResult(BMK_benchOutcome_t outcome);
|
|||||||
* 2 : + result + interaction + warnings;
|
* 2 : + result + interaction + warnings;
|
||||||
* 3 : + information;
|
* 3 : + information;
|
||||||
* 4 : + debug
|
* 4 : + debug
|
||||||
* @return:
|
* @return: 0 on success, !0 on error
|
||||||
* a variant, which expresses either an error, or a valid result.
|
|
||||||
* Use BMK_isSuccessful_benchOutcome() to check if function was successful.
|
|
||||||
* If yes, extract the valid result with BMK_extract_benchResult(),
|
|
||||||
* it will contain :
|
|
||||||
* .cSpeed: compression speed in bytes per second,
|
|
||||||
* .dSpeed: decompression speed in bytes per second,
|
|
||||||
* .cSize : compressed size, in bytes
|
|
||||||
* .cMem : memory budget required for the compression context
|
|
||||||
*/
|
*/
|
||||||
BMK_benchOutcome_t
|
int BMK_benchFiles(
|
||||||
BMK_benchFiles( const char* const * fileNamesTable, unsigned nbFiles,
|
const char* const * fileNamesTable, unsigned nbFiles,
|
||||||
const char* dictFileName,
|
const char* dictFileName,
|
||||||
int cLevel, const ZSTD_compressionParameters* compressionParams,
|
int cLevel, const ZSTD_compressionParameters* compressionParams,
|
||||||
int displayLevel);
|
int displayLevel);
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@ -126,8 +118,7 @@ BMK_advancedParams_t BMK_initAdvancedParams(void);
|
|||||||
/*! BMK_benchFilesAdvanced():
|
/*! BMK_benchFilesAdvanced():
|
||||||
* Same as BMK_benchFiles(),
|
* Same as BMK_benchFiles(),
|
||||||
* with more controls, provided through advancedParams_t structure */
|
* with more controls, provided through advancedParams_t structure */
|
||||||
BMK_benchOutcome_t
|
int BMK_benchFilesAdvanced(
|
||||||
BMK_benchFilesAdvanced(
|
|
||||||
const char* const * fileNamesTable, unsigned nbFiles,
|
const char* const * fileNamesTable, unsigned nbFiles,
|
||||||
const char* dictFileName,
|
const char* dictFileName,
|
||||||
int cLevel, const ZSTD_compressionParameters* compressionParams,
|
int cLevel, const ZSTD_compressionParameters* compressionParams,
|
||||||
|
@ -1391,18 +1391,15 @@ int main(int argCount, const char* argv[])
|
|||||||
int c;
|
int c;
|
||||||
DISPLAYLEVEL(3, "Benchmarking %s \n", filenames->fileNames[i]);
|
DISPLAYLEVEL(3, "Benchmarking %s \n", filenames->fileNames[i]);
|
||||||
for(c = cLevel; c <= cLevelLast; c++) {
|
for(c = cLevel; c <= cLevelLast; c++) {
|
||||||
BMK_benchOutcome_t const bo = BMK_benchFilesAdvanced(&filenames->fileNames[i], 1, dictFileName, c, &compressionParams, g_displayLevel, &benchParams);
|
operationResult = BMK_benchFilesAdvanced(&filenames->fileNames[i], 1, dictFileName, c, &compressionParams, g_displayLevel, &benchParams);
|
||||||
if (!BMK_isSuccessful_benchOutcome(bo)) return 1;
|
|
||||||
} }
|
} }
|
||||||
} else {
|
} else {
|
||||||
for(; cLevel <= cLevelLast; cLevel++) {
|
for(; cLevel <= cLevelLast; cLevel++) {
|
||||||
BMK_benchOutcome_t const bo = BMK_benchFilesAdvanced(filenames->fileNames, (unsigned)filenames->tableSize, dictFileName, cLevel, &compressionParams, g_displayLevel, &benchParams);
|
operationResult = BMK_benchFilesAdvanced(filenames->fileNames, (unsigned)filenames->tableSize, dictFileName, cLevel, &compressionParams, g_displayLevel, &benchParams);
|
||||||
if (!BMK_isSuccessful_benchOutcome(bo)) return 1;
|
|
||||||
} }
|
} }
|
||||||
} else {
|
} else {
|
||||||
for(; cLevel <= cLevelLast; cLevel++) {
|
for(; cLevel <= cLevelLast; cLevel++) {
|
||||||
if ( BMK_syntheticTest(cLevel, compressibility, &compressionParams, g_displayLevel, &benchParams) )
|
operationResult = BMK_syntheticTest(cLevel, compressibility, &compressionParams, g_displayLevel, &benchParams);
|
||||||
return 1;
|
|
||||||
} }
|
} }
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
Reference in New Issue
Block a user