+++ /dev/null
-#include <junction/ConcurrentMap_Grampa.h>
-#include <iostream>
-#include <memory>
-#include <chrono>
-#include <cassert>
-
-namespace {
-
-const unsigned s_nInsertPercentage = 10;
-const char* kTestName = "InsDelFind";
-const size_t kGrampaMapSize = 20000;
-const size_t kGrampaPassCount = 30000;
-const char* kGrampaBenchmarkName = "JunctionMapLinear";
-
-} // namespace
-
-typedef junction::ConcurrentMap_Grampa<size_t, size_t> GrampaMap;
-
-template <typename Map>
-void run_test(size_t map_size, size_t pass_count, const char* bench_name) {
- auto start_time = std::chrono::system_clock::now();
-
- size_t nInsertedNum = 0;
- size_t nFindSuccess = 0;
- std::unique_ptr<Map> map(new Map());
- auto qsbrContext = junction::DefaultQSBR.createContext();
- for (size_t count = 0; count < pass_count; count++) {
- for (size_t i = 0; i < map_size; ++i) {
- // The number to operate on the map.
- size_t n = map_size + i;
- // Insert
- if (i % s_nInsertPercentage == 1) {
- auto iter = map->insertOrFind(n);
- if (!iter.getValue()) {
- iter.assignValue(n);
- nInsertedNum++;
-// std::cout << "Inserted" << n << "\n";
- }
- }
- // Find
- {
- auto iter = map->find(n);
- if (iter.getValue()) {
- ++nFindSuccess;
-// std::cout << "Found" << n << "\n";
- }
- }
- // Delete
- if (i % s_nInsertPercentage == 1) {
- auto iter = map->find(n);
- if (iter.getValue()) {
- iter.eraseValue();
-// std::cout << "Erased" << n << "\n";
- }
- }
- junction::DefaultQSBR.update(qsbrContext);
- }
- }
- auto finish_time = std::chrono::system_clock::now();
- auto dur = finish_time - start_time;
- auto milisecs = std::chrono::duration_cast<std::chrono::milliseconds>(dur);
-
- if (nFindSuccess != nInsertedNum) {
- std::cout << "nFindSuccess=" << nFindSuccess << ", nInsertedNum="
- << nInsertedNum << "\n";
- std::cout << "[ FAILED ] " << kTestName << "." << bench_name
- << "(" << milisecs.count() << " ms)\n";
- assert(false && "ConcurrentMap ERROR");
- } else {
- std::cout << "[ OK ] " << kTestName << "." << bench_name
- << "(" << milisecs.count() << " ms)\n";
- }
-}
-
-int main() {
- run_test<GrampaMap>(kGrampaMapSize, kGrampaPassCount, kGrampaBenchmarkName);
- return 0;
-}
--- /dev/null
+#include <junction/ConcurrentMap_Grampa.h>
+#include <iostream>
+#include <memory>
+#include <chrono>
+#include <cassert>
+
+namespace {
+
+const unsigned s_nInsertPercentage = 10;
+const char* kTestName = "InsDelFind";
+const size_t kGrampaMapSize = 20000;
+const size_t kGrampaPassCount = 30000;
+const char* kGrampaBenchmarkName = "JunctionMapLinear";
+
+} // namespace
+
+typedef junction::ConcurrentMap_Grampa<size_t, size_t> GrampaMap;
+
+template <typename Map>
+void run_test(size_t map_size, size_t pass_count, const char* bench_name) {
+ auto start_time = std::chrono::system_clock::now();
+
+ size_t nInsertedNum = 0;
+ size_t nFindSuccess = 0;
+ std::unique_ptr<Map> map(new Map());
+ auto qsbrContext = junction::DefaultQSBR.createContext();
+ for (size_t count = 0; count < pass_count; count++) {
+ for (size_t i = 0; i < map_size; ++i) {
+ // The number to operate on the map.
+ size_t n = map_size + i;
+ // Insert
+ if (i % s_nInsertPercentage == 1) {
+ auto iter = map->insertOrFind(n);
+ if (!iter.getValue()) {
+ iter.assignValue(n);
+ nInsertedNum++;
+// std::cout << "Inserted" << n << "\n";
+ }
+ }
+ // Find
+ {
+ auto iter = map->find(n);
+ if (iter.getValue()) {
+ ++nFindSuccess;
+// std::cout << "Found" << n << "\n";
+ }
+ }
+ // Delete
+ if (i % s_nInsertPercentage == 1) {
+ auto iter = map->find(n);
+ if (iter.getValue()) {
+ iter.eraseValue();
+// std::cout << "Erased" << n << "\n";
+ }
+ }
+ junction::DefaultQSBR.update(qsbrContext);
+ }
+ }
+ auto finish_time = std::chrono::system_clock::now();
+ auto dur = finish_time - start_time;
+ auto milisecs = std::chrono::duration_cast<std::chrono::milliseconds>(dur);
+
+ if (nFindSuccess != nInsertedNum) {
+ std::cout << "nFindSuccess=" << nFindSuccess << ", nInsertedNum="
+ << nInsertedNum << "\n";
+ std::cout << "[ FAILED ] " << kTestName << "." << bench_name
+ << "(" << milisecs.count() << " ms)\n";
+ assert(false && "ConcurrentMap ERROR");
+ } else {
+ std::cout << "[ OK ] " << kTestName << "." << bench_name
+ << "(" << milisecs.count() << " ms)\n";
+ }
+}
+
+int main() {
+ run_test<GrampaMap>(kGrampaMapSize, kGrampaPassCount, kGrampaBenchmarkName);
+ return 0;
+}
+++ /dev/null
-#include <junction/ConcurrentMap_Linear.h>
-#include <iostream>
-#include <memory>
-#include <chrono>
-#include <cassert>
-
-namespace {
-
-const size_t kMapSize = 10000;
-const size_t kPassCount = 1;
-const unsigned s_nInsertPercentage = 10;
-const char* kTestName = "InsDelFind";
-const char* kBenchmarkName = "JunctionMapLinear";
-
-} // namespace
-
-typedef junction::ConcurrentMap_Linear<turf::u64, turf::u64> Map;
-
-int main() {
- auto start_time = std::chrono::system_clock::now();
-
- size_t nInsertedNum = 0;
- size_t nFindSuccess = 0;
- std::unique_ptr<Map> map(new Map(kMapSize / 8));
- for (size_t count = 0; count < kPassCount; count++) {
- for (size_t i = 1; i <= kMapSize; ++i) {
- // The number to operate on the map.
- size_t n = i;
- // Insert
- if (i % s_nInsertPercentage == 1) {
- auto iter = map->insertOrFind(n);
- if (!iter.getValue()) {
- iter.assignValue(n + 1);
- nInsertedNum++;
- std::cout << "Inserted\n";
- }
- }
- // Find
- {
- auto iter = map->find(n);
- if (!iter.getValue()) {
- ++nFindSuccess;
- std::cout << "Found\n";
- }
- }
- // Delete
- if (i % s_nInsertPercentage == 1) {
- auto iter = map->find(n);
- if (iter.getValue()) {
- iter.eraseValue();
- std::cout << "Erased\n";
- }
- }
- }
- }
- assert(nFindSuccess == nFindSuccess && "junction::ConcurrentMap_Linear ERROR");
-
- auto finish_time = std::chrono::system_clock::now();
- auto dur = finish_time - start_time;
- auto milisecs = std::chrono::duration_cast<std::chrono::milliseconds>(dur);
- std::cout << "[ OK ] " << kTestName << "." << kBenchmarkName << "("
- << milisecs.count() << " ms)\n";
-
- return 0;
-}