--- 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);
 
