blob: dbfadcb80e3da225b8f0a66f4256adce48505a97 [file] [log] [blame]
#include "SpeedTest.h"
#include "Random.h"
#include <stdio.h> // for printf
#include <intrin.h> // for __rdtsc
//-----------------------------------------------------------------------------
// 256k blocks seem to give the best results.
void BulkSpeedTest ( pfHash hash )
{
const int trials = 9999;
const int blocksize = 256 * 1024;
printf("Bulk speed test - %d-byte keys\n",blocksize);
char * block = new char[blocksize + 16];
rand_p(block,blocksize+16);
uint32_t temp[16];
for(int align = 0; align < 8; align++)
{
double bestbpc = 0;
for(int itrial = 0; itrial < trials; itrial++)
{
__int64 begin,end;
begin = __rdtsc();
hash(block + align,blocksize,itrial,temp);
end = __rdtsc();
blackhole(temp[0]);
double cycles = double(end-begin);
double bpc = double(blocksize) / cycles;
if(bpc > bestbpc) bestbpc = bpc;
}
double bestbps = (bestbpc * 3000000000.0 / 1048576.0);
printf("Alignment %2d - %6.3f bytes/cycle - %7.2f MiB/sec @ 3 ghz\n",align,bestbpc,bestbps);
}
delete [] block;
}