X-Git-Url: http://plrg.eecs.uci.edu/git/?p=junction.git;a=blobdiff_plain;f=test%2Fjunction_driver.cpp;h=3ac134b62f445725b2373eafe22b28cc73ab53dc;hp=62b9d6253a3afb81dc5c094d767ab43ebf8acafb;hb=ae91f5184f587d5afdf94d95b57d2a90a30ff5bf;hpb=9e633a0962b85cf8c65ffec484e87d900882b379 diff --git a/test/junction_driver.cpp b/test/junction_driver.cpp index 62b9d62..3ac134b 100644 --- a/test/junction_driver.cpp +++ b/test/junction_driver.cpp @@ -13,9 +13,10 @@ const unsigned s_nInsertPercentage = 10; const char* kTestName = "InsDelFind"; // Run GC after "kGCFrequency" operations. const size_t kGCFrequency = 3000; +const size_t kLeapfrogGCFrequency = 1500; const size_t kCrudeMapSize = 10000; -const size_t kCrudePassCount = 40000; +const size_t kCrudePassCount = 400000; const char* kCrudeBenchmarkName = "JunctionMapCrude"; const size_t kGrampaMapSize = 20000; @@ -38,7 +39,8 @@ typedef junction::ConcurrentMap_Leapfrog LeapfrogMap; typedef junction::ConcurrentMap_Crude CrudeMap; template -void run_crude_map(size_t map_size, size_t pass_count, const char* bench_name) { +void run_crude_map(size_t map_size, size_t pass_count, const char* bench_name, + size_t gc_frequency) { std::cout << "[ RUN ] " << kTestName << "." << bench_name << "\n"; auto start_time = std::chrono::system_clock::now(); @@ -73,13 +75,14 @@ void run_crude_map(size_t map_size, size_t pass_count, const char* bench_name) { // std::cout << "Erased" << i << "\n"; } } - if (++nOperations > kGCFrequency) { + if (++nOperations > gc_frequency) { junction::DefaultQSBR.update(qsbrContext); nOperations = 0; } } } junction::DefaultQSBR.update(qsbrContext); + junction::DefaultQSBR.destroyContext(qsbrContext ); auto finish_time = std::chrono::system_clock::now(); auto dur = finish_time - start_time; auto milisecs = std::chrono::duration_cast(dur); @@ -97,7 +100,8 @@ void run_crude_map(size_t map_size, size_t pass_count, const char* bench_name) { } template -void run_test(size_t map_size, size_t pass_count, const char* bench_name) { +void run_test(size_t map_size, size_t pass_count, const char* bench_name, + size_t gc_frequency) { std::cout << "[ RUN ] " << kTestName << "." << bench_name << "\n"; auto start_time = std::chrono::system_clock::now(); @@ -135,12 +139,14 @@ void run_test(size_t map_size, size_t pass_count, const char* bench_name) { // std::cout << "Erased" << i << "\n"; } } - if (++nOperations > kGCFrequency) { + if (++nOperations > gc_frequency) { junction::DefaultQSBR.update(qsbrContext); nOperations = 0; } } } + junction::DefaultQSBR.update(qsbrContext); + junction::DefaultQSBR.destroyContext(qsbrContext ); auto finish_time = std::chrono::system_clock::now(); auto dur = finish_time - start_time; auto milisecs = std::chrono::duration_cast(dur); @@ -158,9 +164,13 @@ void run_test(size_t map_size, size_t pass_count, const char* bench_name) { } int main() { - run_test(kLinearMapSize, kLinearPassCount, kLinearBenchmarkName); - run_test(kLeapfrogMapSize, kLeapfrogPassCount, kLeapfrogBenchmarkName); - run_test(kGrampaMapSize, kGrampaPassCount, kGrampaBenchmarkName); - run_crude_map(kCrudeMapSize, kCrudePassCount, kCrudeBenchmarkName); + run_crude_map(kCrudeMapSize, kCrudePassCount, kCrudeBenchmarkName, + kGCFrequency); + run_test(kLeapfrogMapSize, kLeapfrogPassCount, + kLeapfrogBenchmarkName, kLeapfrogGCFrequency ); + run_test(kLinearMapSize, kLinearPassCount, kLinearBenchmarkName, + kGCFrequency); + run_test(kGrampaMapSize, kGrampaPassCount, kGrampaBenchmarkName, + kGCFrequency); return 0; }