fix for BMK_clockSpan on Windows
This commit is contained in:
parent
97c88e716c
commit
06f793a3ab
@ -162,9 +162,17 @@ void BMK_SetBlockSize(size_t blockSize)
|
|||||||
/* ********************************************************
|
/* ********************************************************
|
||||||
* Private functions
|
* Private functions
|
||||||
**********************************************************/
|
**********************************************************/
|
||||||
static clock_t BMK_clockSpan( clock_t clockStart )
|
typedef clock_t BMK_time_t;
|
||||||
|
|
||||||
|
static BMK_time_t BMK_getTime()
|
||||||
{
|
{
|
||||||
return clock() - clockStart; /* works even if overflow, span limited to <= ~30mn */
|
return clock();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* returns time span in nanoseconds */
|
||||||
|
static U64 BMK_clockSpan( BMK_time_t clockStart )
|
||||||
|
{
|
||||||
|
return 1000000ULL * (BMK_getTime() - clockStart) / CLOCKS_PER_SEC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -265,20 +273,21 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
double fastestC = 100000000., fastestD = 100000000.;
|
double fastestC = 100000000., fastestD = 100000000.;
|
||||||
double ratio = 0.;
|
double ratio = 0.;
|
||||||
U64 crcCheck = 0;
|
U64 crcCheck = 0;
|
||||||
clock_t coolTime = clock();
|
BMK_time_t coolTime = BMK_getTime();
|
||||||
U32 testNb;
|
U32 testNb;
|
||||||
|
|
||||||
DISPLAYLEVEL(2, "\r%79s\r", "");
|
DISPLAYLEVEL(2, "\r%79s\r", "");
|
||||||
for (testNb = 1; testNb <= (g_nbIterations + !g_nbIterations); testNb++) {
|
for (testNb = 1; testNb <= (g_nbIterations + !g_nbIterations); testNb++) {
|
||||||
int nbLoops;
|
int nbLoops;
|
||||||
clock_t clockStart, clockSpan;
|
BMK_time_t clockStart;
|
||||||
clock_t const clockLoop = g_nbIterations ? TIMELOOP_S * CLOCKS_PER_SEC : 10;
|
U64 clockSpan;
|
||||||
|
U64 const clockLoop = g_nbIterations ? TIMELOOP_S*1000000ULL : 10;
|
||||||
|
|
||||||
/* overheat protection */
|
/* overheat protection */
|
||||||
if (BMK_clockSpan(coolTime) > ACTIVEPERIOD_S * CLOCKS_PER_SEC) {
|
if (BMK_clockSpan(coolTime) > ACTIVEPERIOD_S*1000000ULL) {
|
||||||
DISPLAY("\rcooling down ... \r");
|
DISPLAY("\rcooling down ... \r");
|
||||||
BMK_sleep(COOLPERIOD_S);
|
BMK_sleep(COOLPERIOD_S);
|
||||||
coolTime = clock();
|
coolTime = BMK_getTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Compression */
|
/* Compression */
|
||||||
@ -286,9 +295,9 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
memset(compressedBuffer, 0xE5, maxCompressedSize); /* warm up and erase result buffer */
|
memset(compressedBuffer, 0xE5, maxCompressedSize); /* warm up and erase result buffer */
|
||||||
|
|
||||||
mili_sleep(1); /* give processor time to other processes */
|
mili_sleep(1); /* give processor time to other processes */
|
||||||
clockStart = clock();
|
clockStart = BMK_getTime();
|
||||||
while (clock() == clockStart);
|
while (BMK_getTime() == clockStart);
|
||||||
clockStart = clock();
|
clockStart = BMK_getTime();
|
||||||
|
|
||||||
for (nbLoops = 0 ; BMK_clockSpan(clockStart) < clockLoop ; nbLoops++) {
|
for (nbLoops = 0 ; BMK_clockSpan(clockStart) < clockLoop ; nbLoops++) {
|
||||||
U32 blockNb;
|
U32 blockNb;
|
||||||
@ -308,16 +317,16 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
ratio = (double)srcSize / (double)cSize;
|
ratio = (double)srcSize / (double)cSize;
|
||||||
DISPLAYLEVEL(2, "%2i-%-17.17s :%10u ->%10u (%5.3f),%6.1f MB/s\r",
|
DISPLAYLEVEL(2, "%2i-%-17.17s :%10u ->%10u (%5.3f),%6.1f MB/s\r",
|
||||||
testNb, displayName, (U32)srcSize, (U32)cSize, ratio,
|
testNb, displayName, (U32)srcSize, (U32)cSize, ratio,
|
||||||
(double)srcSize / 1000000. / (fastestC / CLOCKS_PER_SEC) );
|
(double)srcSize / fastestC );
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
/* Decompression */
|
/* Decompression */
|
||||||
memset(resultBuffer, 0xD6, srcSize); /* warm result buffer */
|
memset(resultBuffer, 0xD6, srcSize); /* warm result buffer */
|
||||||
|
|
||||||
mili_sleep(1); /* give processor time to other processes */
|
mili_sleep(1); /* give processor time to other processes */
|
||||||
clockStart = clock();
|
clockStart = BMK_getTime();
|
||||||
while (clock() == clockStart);
|
while (BMK_getTime() == clockStart);
|
||||||
clockStart = clock();
|
clockStart = BMK_getTime();
|
||||||
|
|
||||||
for (nbLoops = 0 ; BMK_clockSpan(clockStart) < clockLoop ; nbLoops++) {
|
for (nbLoops = 0 ; BMK_clockSpan(clockStart) < clockLoop ; nbLoops++) {
|
||||||
U32 blockNb;
|
U32 blockNb;
|
||||||
@ -338,8 +347,8 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
|
|||||||
if ((double)clockSpan < fastestD*nbLoops) fastestD = (double)clockSpan / nbLoops;
|
if ((double)clockSpan < fastestD*nbLoops) fastestD = (double)clockSpan / nbLoops;
|
||||||
DISPLAYLEVEL(2, "%2i-%-17.17s :%10u ->%10u (%5.3f),%6.1f MB/s ,%6.1f MB/s\r",
|
DISPLAYLEVEL(2, "%2i-%-17.17s :%10u ->%10u (%5.3f),%6.1f MB/s ,%6.1f MB/s\r",
|
||||||
testNb, displayName, (U32)srcSize, (U32)cSize, ratio,
|
testNb, displayName, (U32)srcSize, (U32)cSize, ratio,
|
||||||
(double)srcSize / 1000000. / (fastestC / CLOCKS_PER_SEC),
|
(double)srcSize / fastestC,
|
||||||
(double)srcSize / 1000000. / (fastestD / CLOCKS_PER_SEC) );
|
(double)srcSize / fastestD );
|
||||||
|
|
||||||
/* CRC Checking */
|
/* CRC Checking */
|
||||||
_findError:
|
_findError:
|
||||||
@ -372,8 +381,8 @@ _findError:
|
|||||||
if (crcOrig == crcCheck) {
|
if (crcOrig == crcCheck) {
|
||||||
result->ratio = ratio;
|
result->ratio = ratio;
|
||||||
result->cSize = cSize;
|
result->cSize = cSize;
|
||||||
result->cSpeed = (double)srcSize / 1000000. / (fastestC / CLOCKS_PER_SEC);
|
result->cSpeed = (double)srcSize / fastestC;
|
||||||
result->dSpeed = (double)srcSize / 1000000. / (fastestD / CLOCKS_PER_SEC);
|
result->dSpeed = (double)srcSize / fastestD;
|
||||||
}
|
}
|
||||||
DISPLAYLEVEL(2, "%2i#\n", cLevel);
|
DISPLAYLEVEL(2, "%2i#\n", cLevel);
|
||||||
} /* Bench */
|
} /* Bench */
|
||||||
|
Loading…
Reference in New Issue
Block a user