blob: dbfadcb80e3da225b8f0a66f4256adce48505a97 [file] [log] [blame]
tanjent@gmail.comad4b3632010-11-05 01:20:58 +00001#include "SpeedTest.h"
2
3#include "Random.h"
4
5#include <stdio.h> // for printf
6#include <intrin.h> // for __rdtsc
7
8//-----------------------------------------------------------------------------
9// 256k blocks seem to give the best results.
10
11void BulkSpeedTest ( pfHash hash )
12{
13 const int trials = 9999;
14 const int blocksize = 256 * 1024;
15
16 printf("Bulk speed test - %d-byte keys\n",blocksize);
17
18 char * block = new char[blocksize + 16];
19
20 rand_p(block,blocksize+16);
21
22 uint32_t temp[16];
23
24 for(int align = 0; align < 8; align++)
25 {
26 double bestbpc = 0;
27
28 for(int itrial = 0; itrial < trials; itrial++)
29 {
30 __int64 begin,end;
31
32 begin = __rdtsc();
33
34 hash(block + align,blocksize,itrial,temp);
35
36 end = __rdtsc();
37
38 blackhole(temp[0]);
39
40 double cycles = double(end-begin);
41 double bpc = double(blocksize) / cycles;
42 if(bpc > bestbpc) bestbpc = bpc;
43 }
44
45 double bestbps = (bestbpc * 3000000000.0 / 1048576.0);
46 printf("Alignment %2d - %6.3f bytes/cycle - %7.2f MiB/sec @ 3 ghz\n",align,bestbpc,bestbps);
47 }
48
49 delete [] block;
50}