msgQ test: Separate timed loops from printfs. Paranoia.
[charm.git] / tests / charm++ / queue / pgm.C
index ff5cac89842c372adea82a9d87f375a7e06afaf7..7d8d86cd236909d31a3c1d959b0c0cdd9fa3d4e8 100644 (file)
@@ -212,6 +212,19 @@ double timePerOp_general_ififo(int qBaseSize = 256)
 
 bool perftest_general_ififo()
 {
+  std::vector<double> timings;
+  timings.reserve(256);
+  // Charm applications typically have a small/moderate number of different message priorities
+  for (int hl = 16; hl <= 128; hl *=2)
+  {
+    std::srand(42);
+    for (int i = 0; i < qSizeMax + numMsgs; i++)
+      prios[i] = std::rand() % hl;
+
+    for (int i = qSizeMin; i <= qSizeMax; i *= 2)
+      timings.push_back( timePerOp_general_ififo(i) );
+  }
+
   CkPrintf("Reporting time per enqueue / dequeue operation (us) for charm's underlying mixed priority queue\n"
            "Nprios (row) is the number of different priority values that are used.\n"
            "Qlen (col) is the base length of the queue on which the enq/deq operations are timed\n"
@@ -221,16 +234,11 @@ bool perftest_general_ififo()
   for (int i = qSizeMin; i <= qSizeMax; i*=2)
     CkPrintf("%10d", i);
 
-  // Charm applications typically have a small/moderate number of different message priorities
-  for (int hl = 16; hl <= 128; hl *=2)
+  for (int hl = 16, j=0; hl <= 128; hl *=2)
   {
-    std::srand(42);
-    for (int i = 0; i < qSizeMax + numMsgs; i++)
-      prios[i] = std::rand() % hl;
-
     CkPrintf("\n  charm %7d", hl);
-    for (int i = qSizeMin; i <= qSizeMax; i *= 2)
-      CkPrintf("%10.4f", timePerOp_general_ififo(i));
+    for (int i = qSizeMin; i <= qSizeMax; i *= 2, j++)
+      CkPrintf("%10.4f", timings[j]);
   }
 
   CkPrintf("\n");