X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=samples%2FMapPerformanceTests%2FMapPerformanceTests.cpp;fp=samples%2FMapPerformanceTests%2FMapPerformanceTests.cpp;h=331aba09dbcc734b55c3894c67f2a934f52de293;hb=39e02b325f8e3104b71b2fce9cc6c7a19f8dc639;hp=ceead97ea0b19dbfb31897591a51b2547104eee8;hpb=ce08f11c83396f629f998fe9e05ff1628f1e2677;p=junction.git diff --git a/samples/MapPerformanceTests/MapPerformanceTests.cpp b/samples/MapPerformanceTests/MapPerformanceTests.cpp index ceead97..331aba0 100644 --- a/samples/MapPerformanceTests/MapPerformanceTests.cpp +++ b/samples/MapPerformanceTests/MapPerformanceTests.cpp @@ -19,6 +19,7 @@ #include #include #include +#include using namespace turf::intTypes; typedef junction::extra::MapAdapter MapAdapter; @@ -70,7 +71,7 @@ struct SharedState { class ThreadState { public: - SharedState& m_shared; + SharedState* m_shared; MapAdapter::ThreadContext m_threadCtx; ureg m_threadIndex; u32 m_rangeLo; @@ -104,8 +105,8 @@ public: Stats m_stats; - ThreadState(SharedState& shared, ureg threadIndex, u32 rangeLo, u32 rangeHi) - : m_shared(shared), m_threadCtx(shared.adapter, threadIndex) { + ThreadState(SharedState* shared, ureg threadIndex, u32 rangeLo, u32 rangeHi) + : m_shared(shared), m_threadCtx(shared->adapter, threadIndex) { m_threadIndex = threadIndex; m_rangeLo = rangeLo; m_rangeHi = rangeHi; @@ -123,8 +124,8 @@ public: void initialPopulate() { TURF_ASSERT(m_addIndex == m_removeIndex); - MapAdapter::Map* map = m_shared.map; - for (ureg i = 0; i < m_shared.numKeysPerThread; i++) { + MapAdapter::Map* map = m_shared->map; + for (ureg i = 0; i < m_shared->numKeysPerThread; i++) { u32 key = m_addIndex * Prime; map->assign(key, (void*) (key & ~uptr(3))); if (++m_addIndex == m_rangeHi) @@ -133,17 +134,17 @@ public: } void run() { - MapAdapter::Map* map = m_shared.map; + MapAdapter::Map* map = m_shared->map; turf::CPUTimer::Converter converter; - Delay delay(m_shared.delayFactor); + Delay delay(m_shared->delayFactor); Stats stats; ureg lookupIndex = m_rangeLo; - ureg remaining = m_shared.itersPerChunk; + ureg remaining = m_shared->itersPerChunk; if (m_threadIndex == 0) - m_shared.spinKicker.kick(m_shared.numThreads - 1); + m_shared->spinKicker.kick(m_shared->numThreads - 1); else { remaining = ~u32(0); - m_shared.spinKicker.waitForKick(); + m_shared->spinKicker.waitForKick(); } // --------- @@ -151,7 +152,7 @@ public: for (; remaining > 0; remaining--) { // Add delay.delay(stats.workUnitsDone); - if (m_shared.doneFlag.load(turf::Relaxed)) + if (m_shared->doneFlag.load(turf::Relaxed)) break; u32 key = m_addIndex * Prime; if (key >= 2) { @@ -164,9 +165,9 @@ public: // Lookup if (s32(lookupIndex - m_removeIndex) < 0) lookupIndex = m_removeIndex; - for (ureg l = 0; l < m_shared.readsPerWrite; l++) { + for (ureg l = 0; l < m_shared->readsPerWrite; l++) { delay.delay(stats.workUnitsDone); - if (m_shared.doneFlag.load(turf::Relaxed)) + if (m_shared->doneFlag.load(turf::Relaxed)) break; key = lookupIndex * Prime; if (key >= 2) { @@ -182,7 +183,7 @@ public: // Remove delay.delay(stats.workUnitsDone); - if (m_shared.doneFlag.load(turf::Relaxed)) + if (m_shared->doneFlag.load(turf::Relaxed)) break; key = m_removeIndex * Prime; if (key >= 2) { @@ -195,9 +196,9 @@ public: // Lookup if (s32(lookupIndex - m_removeIndex) < 0) lookupIndex = m_removeIndex; - for (ureg l = 0; l < m_shared.readsPerWrite; l++) { + for (ureg l = 0; l < m_shared->readsPerWrite; l++) { delay.delay(stats.workUnitsDone); - if (m_shared.doneFlag.load(turf::Relaxed)) + if (m_shared->doneFlag.load(turf::Relaxed)) break; key = lookupIndex * Prime; if (key >= 2) { @@ -212,7 +213,7 @@ public: } } if (m_threadIndex == 0) - m_shared.doneFlag.store(1, turf::Relaxed); + m_shared->doneFlag.store(1, turf::Relaxed); m_threadCtx.update(); turf::CPUTimer::Point end = turf::CPUTimer::get(); // --------- @@ -248,7 +249,7 @@ int main(int argc, const char** argv) { for (ureg t = 0; t < numThreads; t++) { u32 rangeLo = 0xffffffffu / numThreads * t + 1; u32 rangeHi = 0xffffffffu / numThreads * (t + 1) + 1; - threads.emplace_back(shared, t, rangeLo, rangeHi); + threads.push_back(ThreadState(&shared, t, rangeLo, rangeHi)); } dispatcher.kickMulti(&ThreadState::registerThread, &threads[0], threads.size()); @@ -259,7 +260,7 @@ int main(int argc, const char** argv) { dispatcher.kickMulti(&ThreadState::initialPopulate, &threads[0], threads.size()); printf("{\n"); - printf("'mapType': '%s',\n", MapAdapter::MapName); + printf("'mapType': '%s',\n", MapAdapter::getMapName()); printf("'readsPerWrite': %d,\n", (int) readsPerWrite); printf("'itersPerChunk': %d,\n", (int) itersPerChunk); printf("'chunks': %d,\n", (int) chunks);