blob: c7766f3bcc76254a770cfdaa1fa769ef2466a1b7 [file] [log] [blame]
--- main.cpp 2011-09-08 10:12:34.000000000 -0700
+++ main.cpp 2013-06-18 10:21:07.000000000 -0700
@@ -15,7 +18,9 @@
bool g_testSanity = false;
bool g_testSpeed = false;
-bool g_testDiff = false;
+bool g_testDiff1 = false;
+bool g_testDiff2 = false;
+bool g_testDiff3 = false;
bool g_testDiffDist = false;
bool g_testAvalanche = false;
bool g_testBIC = false;
@@ -148,7 +213,7 @@
BulkSpeedTest(info->hash,info->verification);
printf("\n");
- for(int i = 1; i < 32; i++)
+ for(int i = 1; i <= 72; i++)
{
double cycles;
@@ -161,16 +226,40 @@
//-----------------------------------------------------------------------------
// Differential tests
- if(g_testDiff || g_testAll)
- {
- printf("[[[ Differential Tests ]]]\n\n");
+ if(g_testDiff1 || g_testAll)
+ {
+ printf("[[[ Differential Tests (64) ]]]\n\n");
bool result = true;
bool dumpCollisions = false;
result &= DiffTest< Blob<64>, hashtype >(hash,5,1000,dumpCollisions);
+
+ if(!result) printf("*********FAIL*********\n");
+ printf("\n");
+ }
+
+ if(g_testDiff2 || g_testAll)
+ {
+ printf("[[[ Differential Tests (256) ]]]\n\n");
+
+ bool result = true;
+ bool dumpCollisions = false;
+
+ result &= DiffTest< Blob<256>, hashtype >(hash,3,1000,dumpCollisions);
+
+ if(!result) printf("*********FAIL*********\n");
+ printf("\n");
+ }
+
+ if(g_testDiff3 || g_testAll)
+ {
+ printf("[[[ Differential Tests (128) ]]]\n\n");
+
+ bool result = true;
+ bool dumpCollisions = false;
+
result &= DiffTest< Blob<128>, hashtype >(hash,4,1000,dumpCollisions);
- result &= DiffTest< Blob<256>, hashtype >(hash,3,1000,dumpCollisions);
if(!result) printf("*********FAIL*********\n");
printf("\n");
@@ -544,6 +633,37 @@
{
const char * hashToTest = "murmur3a";
+ bool use_affinity = true, part0 = false, part1 = false, part2 = false, part3 = false, part4 = false, part5 = false, part6 = false, part7 = false, part8 = false, part9 = false;
+ while (argc > 2) {
+ if (!strcmp(argv[1], "--noaffinity")) {
+ use_affinity = false;
+ } else if (!strcmp(argv[1], "--part0")) {
+ part0 = true;
+ } else if (!strcmp(argv[1], "--part1")) {
+ part1 = true;
+ } else if (!strcmp(argv[1], "--part2")) {
+ part2 = true;
+ } else if (!strcmp(argv[1], "--part3")) {
+ part3 = true;
+ } else if (!strcmp(argv[1], "--part4")) {
+ part4 = true;
+ } else if (!strcmp(argv[1], "--part5")) {
+ part5 = true;
+ } else if (!strcmp(argv[1], "--part6")) {
+ part6 = true;
+ } else if (!strcmp(argv[1], "--part7")) {
+ part7 = true;
+ } else if (!strcmp(argv[1], "--part8")) {
+ part8 = true;
+ } else if (!strcmp(argv[1], "--part9")) {
+ part9 = true;
+ } else {
+ fprintf(stderr, "Unknown flag '%s'\n", argv[1]);
+ return 1;
+ }
+ argc--;
+ argv++;
+ }
if(argc < 2)
{
printf("(No test hash given on command line, testing Murmur3_x86_32.)\n");
@@ -555,26 +675,30 @@
// Code runs on the 3rd CPU by default
- SetAffinity((1 << 2));
-
- SelfTest();
+ if (use_affinity) {
+ SetAffinity((1 << 2));
+ }
+
+ //SelfTest();
int timeBegin = clock();
- g_testAll = true;
-
- //g_testSanity = true;
- //g_testSpeed = true;
- //g_testAvalanche = true;
- //g_testBIC = true;
- //g_testCyclic = true;
- //g_testTwoBytes = true;
- //g_testDiff = true;
- //g_testDiffDist = true;
- //g_testSparse = true;
- //g_testPermutation = true;
- //g_testWindow = true;
- //g_testZeroes = true;
+ g_testAll = !part0 && !part1 && !part2 && !part3 && !part4 && !part5 && !part6 && !part7 && !part8 && !part9;
+
+ g_testSanity = part0;
+ g_testSpeed = false;
+ g_testAvalanche = part3;
+ g_testBIC = part4;
+ g_testCyclic = part9;
+ g_testTwoBytes = part6;
+ g_testDiff1 = part7;
+ g_testDiff2 = part5;
+ g_testDiff3 = part1;
+ g_testDiffDist = part8;
+ g_testSparse = part0;
+ g_testPermutation = part2;
+ g_testWindow = part3;
+ g_testZeroes = part4;
testHash(hashToTest);