Fixed : issue within fullbench, reported by AJ Baxter

This commit is contained in:
Yann Collet 2015-01-24 12:08:52 +01:00
parent 04d8e15e57
commit 18a68714d0
2 changed files with 27 additions and 15 deletions

View File

@ -70,6 +70,7 @@
#define CDG_SIZE_DEFAULT (64 KB) #define CDG_SIZE_DEFAULT (64 KB)
#define CDG_SEED_DEFAULT 0 #define CDG_SEED_DEFAULT 0
#define CDG_COMPRESSIBILITY_DEFAULT 50 #define CDG_COMPRESSIBILITY_DEFAULT 50
#define CDG_LITDENSITY_DEFAULT 12
#define PRIME1 2654435761U #define PRIME1 2654435761U
#define PRIME2 2246822519U #define PRIME2 2246822519U
@ -85,7 +86,6 @@
* Local Parameters * Local Parameters
**************************************/ **************************************/
static unsigned no_prompt = 0; static unsigned no_prompt = 0;
static char* programName;
static unsigned displayLevel = 2; static unsigned displayLevel = 2;
@ -137,7 +137,7 @@ static char CDG_genChar(U32* seed, const void* ltctx)
#define CDG_RAND15BITS ((CDG_rand(seed) >> 3) & 32767) #define CDG_RAND15BITS ((CDG_rand(seed) >> 3) & 32767)
#define CDG_RANDLENGTH ( ((CDG_rand(seed) >> 7) & 7) ? (CDG_rand(seed) & 15) : (CDG_rand(seed) & 511) + 15) #define CDG_RANDLENGTH ( ((CDG_rand(seed) >> 7) & 7) ? (CDG_rand(seed) & 15) : (CDG_rand(seed) & 511) + 15)
#define CDG_DICTSIZE (32 KB) #define CDG_DICTSIZE (32 KB)
static void CDG_generate(U64 size, U32* seed, double matchProba) static void CDG_generate(U64 size, U32* seed, double matchProba, double litProba)
{ {
BYTE fullbuff[CDG_DICTSIZE + 128 KB + 1]; BYTE fullbuff[CDG_DICTSIZE + 128 KB + 1];
BYTE* buff = fullbuff + CDG_DICTSIZE; BYTE* buff = fullbuff + CDG_DICTSIZE;
@ -145,8 +145,7 @@ static void CDG_generate(U64 size, U32* seed, double matchProba)
U32 P32 = (U32)(32768 * matchProba); U32 P32 = (U32)(32768 * matchProba);
U32 pos=1; U32 pos=1;
U32 genBlockSize = 128 KB; U32 genBlockSize = 128 KB;
double literalDistrib = 0.13; void* ldctx = CDG_createLiteralDistrib(litProba);
void* ldctx = CDG_createLiteralDistrib(literalDistrib);
/* Build initial prefix */ /* Build initial prefix */
fullbuff[0] = CDG_genChar(seed, ldctx); fullbuff[0] = CDG_genChar(seed, ldctx);
@ -221,7 +220,7 @@ static void CDG_generate(U64 size, U32* seed, double matchProba)
/********************************************************* /*********************************************************
* Command line * Command line
*********************************************************/ *********************************************************/
static int CDG_usage(void) static int CDG_usage(char* programName)
{ {
DISPLAY( "Compressible data generator\n"); DISPLAY( "Compressible data generator\n");
DISPLAY( "Usage :\n"); DISPLAY( "Usage :\n");
@ -239,9 +238,11 @@ static int CDG_usage(void)
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
int argNb; int argNb;
int proba = CDG_COMPRESSIBILITY_DEFAULT; U32 proba = CDG_COMPRESSIBILITY_DEFAULT;
U32 litProba = CDG_LITDENSITY_DEFAULT;
U64 size = CDG_SIZE_DEFAULT; U64 size = CDG_SIZE_DEFAULT;
U32 seed = CDG_SEED_DEFAULT; U32 seed = CDG_SEED_DEFAULT;
char* programName;
/* Check command line */ /* Check command line */
programName = argv[0]; programName = argv[0];
@ -262,7 +263,7 @@ int main(int argc, char** argv)
switch(*argument) switch(*argument)
{ {
case 'h': case 'h':
return CDG_usage(); return CDG_usage(programName);
case 'g': case 'g':
argument++; argument++;
size=0; size=0;
@ -287,7 +288,7 @@ int main(int argc, char** argv)
argument++; argument++;
} }
break; break;
case 'p': case 'P':
argument++; argument++;
proba=0; proba=0;
while ((*argument>='0') && (*argument<='9')) while ((*argument>='0') && (*argument<='9'))
@ -296,14 +297,25 @@ int main(int argc, char** argv)
proba += *argument - '0'; proba += *argument - '0';
argument++; argument++;
} }
if (proba<0) proba=0;
if (proba>100) proba=100; if (proba>100) proba=100;
break; break;
case 'L':
argument++;
litProba=0;
while ((*argument>='0') && (*argument<='9'))
{
litProba *= 10;
litProba += *argument - '0';
argument++;
}
if (litProba>100) litProba=100;
break;
case 'v': case 'v':
displayLevel = 4; displayLevel = 4;
argument++; argument++;
break; break;
default: ; default:
return CDG_usage(programName);
} }
} }
@ -314,7 +326,7 @@ int main(int argc, char** argv)
DISPLAYLEVEL(3, "Seed = %u \n", seed); DISPLAYLEVEL(3, "Seed = %u \n", seed);
if (proba!=CDG_COMPRESSIBILITY_DEFAULT) DISPLAYLEVEL(3, "Compressibility : %i%%\n", proba); if (proba!=CDG_COMPRESSIBILITY_DEFAULT) DISPLAYLEVEL(3, "Compressibility : %i%%\n", proba);
CDG_generate(size, &seed, ((double)proba) / 100); CDG_generate(size, &seed, ((double)proba) / 100, ((double)litProba) / 100);
return 0; return 0;
} }

View File

@ -383,7 +383,7 @@ size_t benchMem(void* src, size_t srcSize, U32 benchNb)
} }
/* Allocation */ /* Allocation */
dstBuffSize = srcSize + 512; dstBuffSize = ZSTD_compressBound(srcSize);
dstBuff = malloc(dstBuffSize); dstBuff = malloc(dstBuffSize);
buff2 = malloc(dstBuffSize); buff2 = malloc(dstBuffSize);
if ((!dstBuff) || (!buff2)) if ((!dstBuff) || (!buff2))
@ -545,7 +545,7 @@ int benchFiles(char** fileNamesTable, int nbFiles, U32 benchNb)
DISPLAY("Not enough memory for '%s' full size; testing %i MB only...\n", inFileName, (int)(benchedSize>>20)); DISPLAY("Not enough memory for '%s' full size; testing %i MB only...\n", inFileName, (int)(benchedSize>>20));
} }
// Alloc /* Alloc */
origBuff = (char*) malloc((size_t)benchedSize); origBuff = (char*) malloc((size_t)benchedSize);
if(!origBuff) if(!origBuff)
{ {
@ -554,7 +554,7 @@ int benchFiles(char** fileNamesTable, int nbFiles, U32 benchNb)
return 12; return 12;
} }
// Fill input buffer /* Fill input buffer */
DISPLAY("Loading %s... \r", inFileName); DISPLAY("Loading %s... \r", inFileName);
readSize = fread(origBuff, 1, benchedSize, inFile); readSize = fread(origBuff, 1, benchedSize, inFile);
fclose(inFile); fclose(inFile);
@ -566,7 +566,7 @@ int benchFiles(char** fileNamesTable, int nbFiles, U32 benchNb)
return 13; return 13;
} }
// bench /* bench */
DISPLAY("\r%79s\r", ""); DISPLAY("\r%79s\r", "");
DISPLAY(" %s : \n", inFileName); DISPLAY(" %s : \n", inFileName);
if (benchNb) if (benchNb)