projects
/
junction.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Adds finer-grain GC
[junction.git]
/
test
/
junction_driver.cpp
diff --git
a/test/junction_driver.cpp
b/test/junction_driver.cpp
index 68ef214b01cc69894b586ab21db437cc69e3038a..62b9d6253a3afb81dc5c094d767ab43ebf8acafb 100644
(file)
--- a/
test/junction_driver.cpp
+++ b/
test/junction_driver.cpp
@@
-11,22
+11,25
@@
namespace {
const unsigned s_nInsertPercentage = 10;
const char* kTestName = "InsDelFind";
const unsigned s_nInsertPercentage = 10;
const char* kTestName = "InsDelFind";
+// Run GC after "kGCFrequency" operations.
+const size_t kGCFrequency = 3000;
+
+const size_t kCrudeMapSize = 10000;
+const size_t kCrudePassCount = 40000;
+const char* kCrudeBenchmarkName = "JunctionMapCrude";
+
const size_t kGrampaMapSize = 20000;
const size_t kGrampaPassCount = 30000;
const char* kGrampaBenchmarkName = "JunctionMapGrampa";
const size_t kGrampaMapSize = 20000;
const size_t kGrampaPassCount = 30000;
const char* kGrampaBenchmarkName = "JunctionMapGrampa";
-const size_t kLinearMapSize = 2
5
000;
-const size_t kLinearPassCount =
3
0000;
+const size_t kLinearMapSize = 2
0
000;
+const size_t kLinearPassCount =
7
0000;
const char* kLinearBenchmarkName = "JunctionMapLinear";
const char* kLinearBenchmarkName = "JunctionMapLinear";
-const size_t kLeapfrogMapSize = 2
5
000;
-const size_t kLeapfrogPassCount =
30
000;
+const size_t kLeapfrogMapSize = 2
0
000;
+const size_t kLeapfrogPassCount =
75
000;
const char* kLeapfrogBenchmarkName = "JunctionMapLeapfrog";
const char* kLeapfrogBenchmarkName = "JunctionMapLeapfrog";
-const size_t kCrudeMapSize = 10000;
-const size_t kCrudePassCount = 120000;
-const char* kCrudeBenchmarkName = "JunctionMapCrude";
-
} // namespace
typedef junction::ConcurrentMap_Grampa<size_t, size_t> GrampaMap;
} // namespace
typedef junction::ConcurrentMap_Grampa<size_t, size_t> GrampaMap;
@@
-41,6
+44,7
@@
void run_crude_map(size_t map_size, size_t pass_count, const char* bench_name) {
size_t nInsertedNum = 0;
size_t nFindSuccess = 0;
size_t nInsertedNum = 0;
size_t nFindSuccess = 0;
+ size_t nOperations = 0;
// Seems like the crude map won't resize, so better have a large enough
// capacity.
std::unique_ptr<Map> map(new Map(map_size * 32));
// Seems like the crude map won't resize, so better have a large enough
// capacity.
std::unique_ptr<Map> map(new Map(map_size * 32));
@@
-69,9
+73,13
@@
void run_crude_map(size_t map_size, size_t pass_count, const char* bench_name) {
// std::cout << "Erased" << i << "\n";
}
}
// std::cout << "Erased" << i << "\n";
}
}
- junction::DefaultQSBR.update(qsbrContext);
+ if (++nOperations > kGCFrequency) {
+ junction::DefaultQSBR.update(qsbrContext);
+ nOperations = 0;
+ }
}
}
}
}
+ 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);
auto finish_time = std::chrono::system_clock::now();
auto dur = finish_time - start_time;
auto milisecs = std::chrono::duration_cast<std::chrono::milliseconds>(dur);
@@
-95,6
+103,7
@@
void run_test(size_t map_size, size_t pass_count, const char* bench_name) {
size_t nInsertedNum = 0;
size_t nFindSuccess = 0;
size_t nInsertedNum = 0;
size_t nFindSuccess = 0;
+ size_t nOperations = 0;
std::unique_ptr<Map> map(new Map());
auto qsbrContext = junction::DefaultQSBR.createContext();
for (size_t count = 0; count < pass_count; count++) {
std::unique_ptr<Map> map(new Map());
auto qsbrContext = junction::DefaultQSBR.createContext();
for (size_t count = 0; count < pass_count; count++) {
@@
-126,7
+135,10
@@
void run_test(size_t map_size, size_t pass_count, const char* bench_name) {
// std::cout << "Erased" << i << "\n";
}
}
// std::cout << "Erased" << i << "\n";
}
}
- junction::DefaultQSBR.update(qsbrContext);
+ if (++nOperations > kGCFrequency) {
+ junction::DefaultQSBR.update(qsbrContext);
+ nOperations = 0;
+ }
}
}
auto finish_time = std::chrono::system_clock::now();
}
}
auto finish_time = std::chrono::system_clock::now();
@@
-146,9
+158,9
@@
void run_test(size_t map_size, size_t pass_count, const char* bench_name) {
}
int main() {
}
int main() {
- run_crude_map<CrudeMap>(kCrudeMapSize, kCrudePassCount, kCrudeBenchmarkName);
- run_test<LeapfrogMap>(kLeapfrogMapSize, kLeapfrogPassCount, kLeapfrogBenchmarkName);
run_test<LinearMap>(kLinearMapSize, kLinearPassCount, kLinearBenchmarkName);
run_test<LinearMap>(kLinearMapSize, kLinearPassCount, kLinearBenchmarkName);
+ run_test<LeapfrogMap>(kLeapfrogMapSize, kLeapfrogPassCount, kLeapfrogBenchmarkName);
run_test<GrampaMap>(kGrampaMapSize, kGrampaPassCount, kGrampaBenchmarkName);
run_test<GrampaMap>(kGrampaMapSize, kGrampaPassCount, kGrampaBenchmarkName);
+ run_crude_map<CrudeMap>(kCrudeMapSize, kCrudePassCount, kCrudeBenchmarkName);
return 0;
}
return 0;
}