msgQ test: Use unordered_map (supported by C++11 std) if available
authorRamprasad Venkataraman <ramv@illinois.edu>
Tue, 19 Jun 2012 16:53:26 +0000 (11:53 -0500)
committerRamprasad Venkataraman <ramv@illinois.edu>
Thu, 28 Jun 2012 16:00:52 +0000 (11:00 -0500)
tests/charm++/queue/msgq.h
tests/charm++/queue/pgm.C

index 50a351eca90a09fe5d5ec9e8d876c01410d80a5a..edee8d5dc5532364b2048aa99df162eff06ad362 100644 (file)
@@ -3,9 +3,14 @@
 
 #include <deque>
 #include <queue>
-#include <map>
 #include <ostream>
 
+#if CMK_HAS_STD_UNORDERED_MAP
+#include <unordered_map>
+#else
+#include <map>
+#endif
+
 typedef void msg_t;
 
 template <typename P>
@@ -46,7 +51,11 @@ class msgQ
 
     private:
         size_t qSize;
+        #if CMK_HAS_STD_UNORDERED_MAP
+        std::unordered_map<prio_t, std::deque<const msg_t*> > msgmap;
+        #else
         std::map<prio_t, std::deque<const msg_t*> > msgmap;
+        #endif
         std::priority_queue<prio_t, std::vector<prio_t>, std::greater<prio_t> > prios;
 };
 
@@ -70,7 +79,6 @@ void msgQ<P>::enq(const msg_t *msg
         q.push_front(msg);
     // Increment the total number of msgs in this container
     qSize++;
-
 }
 
 
index 9ac2168aecc57cd5f6ecd1a050acdf8fbdab1edf..9da42828e5c7ca617ceeb35d8fd74a89a3628f1d 100644 (file)
@@ -237,6 +237,12 @@ double timePerOp_stlQ(int qBaseSize = 256)
 
 bool perftest_general_ififo()
 {
+  #if CMK_HAS_STD_UNORDERED_MAP
+  CkPrintf("The STL variant of the msg q is using a std::unordered_map\n");
+  #else
+  CkPrintf("The STL variant of the msg q is using a std::map\n");
+  #endif
+
   CkPrintf("Reporting time per enqueue / dequeue operation for charm's underlying mixed priority queue\n");
   CkPrintf("\n  Q length     time/op(us)\n");
   for (int i = 16; i <= 2048; i *= 2)