forked from MassiveAtoms/hashmap-bench
for real this time
This commit is contained in:
parent
64adaa9be1
commit
904e2d1c0b
@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.15)
|
||||
project(another_studproject)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
# set(CMAKE_CXX_FLAGS "-O3 -flto=thin -march=native")
|
||||
set(CMAKE_CXX_FLAGS "-O3 -flto=thin -march=native")
|
||||
add_executable(another_studproject
|
||||
./src/includes/generator.h
|
||||
./src/generator.cpp
|
||||
|
4
main.cpp
4
main.cpp
@ -18,8 +18,8 @@ typedef std::unordered_map<string, string> stringmap;
|
||||
int main() {
|
||||
time_point<steady_clock> start_test = steady_clock::now();
|
||||
// string_test(stringmap{}, 1); // process gets killed for sizes >35000
|
||||
int_test_aggregate(intmap{}, 2);
|
||||
string_test_aggregate(stringmap{}, 2);
|
||||
int_test_aggregate(intmap{}, 1);
|
||||
string_test_aggregate(stringmap{}, 1);
|
||||
time_point<steady_clock> end_test = steady_clock::now();
|
||||
std::cout << "1 run all tests 1 map: " << duration_cast<minutes>(end_test-start_test).count() << " minutes";
|
||||
// test takes 52 mins for 10 runs for one hashmap
|
||||
|
33
results.csv
33
results.csv
@ -0,0 +1,33 @@
|
||||
|
||||
int_insert, 'std::unordered_map<int, int>', 554, 591, 503, 498, 512, 526, 560, 564, 580
|
||||
int_succ_lookup, 'std::unordered_map<int, int>', 435, 292, 312, 334, 354, 362, 383, 398, 413
|
||||
int_nosucc_lookup, 'std::unordered_map<int, int>', 1571, 1800, 2700, 3538, 4559, 567, 6292, 596, 606
|
||||
int_delete, 'std::unordered_map<int, int>', 428, 415, 461, 500, 510, 557, 561, 605, 615
|
||||
int_insert, 'std::unordered_map<int, int>', 629, 459, 527, 498, 562, 541, 558, 557, 557
|
||||
int_succ_lookup, 'std::unordered_map<int, int>', 404, 288, 342, 336, 357, 376, 396, 388, 392
|
||||
int_nosucc_lookup, 'std::unordered_map<int, int>', 1608, 2003, 2863, 3699, 4624, 576, 6560, 586, 599
|
||||
int_delete, 'std::unordered_map<int, int>', 532, 482, 479, 538, 519, 588, 587, 582, 591
|
||||
int_insert, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 636, 644, 667, 728, 737, 727, 752, 750, 749
|
||||
int_succ_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 432, 457, 472, 504, 506, 505, 537, 530, 519
|
||||
int_nosucc_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 1139, 1675, 2395, 2933, 3777, 650, 4953, 660, 661
|
||||
int_delete, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 762, 616, 648, 697, 693, 699, 736, 715, 713
|
||||
int_insert, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 706, 696, 865, 841, 689, 687, 716, 709, 721
|
||||
int_succ_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 582, 485, 799, 685, 495, 500, 537, 534, 518
|
||||
int_nosucc_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 1124, 1752, 3944, 3627, 3532, 601, 5333, 620, 628
|
||||
int_delete, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 672, 632, 1036, 797, 691, 691, 819, 727, 722
|
||||
int_insert, 'std::unordered_map<int, int>', 138, 358, 194, 221, 228, 236, 257, 263, 262
|
||||
int_succ_lookup, 'std::unordered_map<int, int>', 65, 202, 94, 107, 135, 114, 121, 120, 122
|
||||
int_nosucc_lookup, 'std::unordered_map<int, int>', 358, 1158, 1226, 1606, 2330, 250, 2889, 306, 263
|
||||
int_delete, 'std::unordered_map<int, int>', 166, 304, 229, 263, 282, 290, 310, 330, 328
|
||||
int_insert, 'std::unordered_map<int, int>', 87, 240, 248, 218, 228, 241, 259, 254, 264
|
||||
int_succ_lookup, 'std::unordered_map<int, int>', 37, 196, 101, 107, 114, 137, 136, 125, 124
|
||||
int_nosucc_lookup, 'std::unordered_map<int, int>', 233, 885, 1243, 1595, 2097, 241, 4238, 265, 267
|
||||
int_delete, 'std::unordered_map<int, int>', 95, 228, 256, 270, 287, 310, 571, 303, 351
|
||||
int_insert, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 591, 534, 307, 370, 382, 382, 399, 405, 409
|
||||
int_succ_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 189, 225, 264, 285, 287, 291, 302, 301, 308
|
||||
int_nosucc_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 568, 2173, 1793, 2297, 2845, 376, 3789, 388, 384
|
||||
int_delete, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 243, 828, 342, 365, 373, 375, 388, 386, 394
|
||||
int_insert, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 350, 290, 296, 501, 942, 349, 340, 346, 355
|
||||
int_succ_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 180, 237, 249, 385, 476, 289, 283, 288, 291
|
||||
int_nosucc_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 665, 1202, 1745, 3419, 4709, 321, 3521, 332, 350
|
||||
int_delete, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >', 246, 310, 322, 457, 1076, 353, 371, 373, 386
|
|
@ -4,13 +4,14 @@
|
||||
#include "./tests.h"
|
||||
#include <ostream>
|
||||
#include <iostream>
|
||||
#include <thread>
|
||||
|
||||
|
||||
vector<int> sizes = {
|
||||
50000, 100000, 150000, 200000, 250000, 300000, 350000, 400000, 500000,
|
||||
600000, 700000, 800000, 900000, 1000000,
|
||||
2000000, 3000000, 4000000, 5000000, 6000000, 7000000, 8000000, 9000000, 10000000,
|
||||
// 15000000, 20000000, 25000000, 30000000, 35000000, 40000000, 45000000, 50000000
|
||||
15000000, 20000000, 25000000, 30000000, 35000000, 40000000, 45000000, 50000000
|
||||
};
|
||||
// to print type info
|
||||
|
||||
@ -46,7 +47,7 @@ std::basic_string_view<char> name(T var){
|
||||
template<class T>
|
||||
void int_test_aggregate(T map, int runs){
|
||||
std::ofstream output{"results.csv", std::ios_base::app};
|
||||
for (int i = 0; i < runs; ++i);
|
||||
for (int i = 0; i < runs; ++i){
|
||||
string insert = "\nint_insert, '";
|
||||
string succ_lookup = "\nint_succ_lookup, '";
|
||||
string nosucc_lookup = "\nint_nosucc_lookup, '";
|
||||
@ -57,7 +58,7 @@ void int_test_aggregate(T map, int runs){
|
||||
nosucc_lookup += string{name(map)} +"'" ;
|
||||
delet += string{name(map)} + "'" ;
|
||||
for ( auto size : sizes){
|
||||
vector<float> results = int_test(map, size);
|
||||
vector<int> results = int_test(map, size);
|
||||
|
||||
insert += ", " + std::to_string(results[0]);
|
||||
succ_lookup += ", " + std::to_string(results[1]);
|
||||
@ -67,6 +68,8 @@ void int_test_aggregate(T map, int runs){
|
||||
output << insert << succ_lookup << nosucc_lookup << delet;
|
||||
cout << insert << succ_lookup << nosucc_lookup << delet;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -74,7 +77,7 @@ void int_test_aggregate(T map, int runs){
|
||||
template<class T>
|
||||
void string_test_aggregate(T map, int runs){
|
||||
std::ofstream output{"results.csv", std::ios_base::app};
|
||||
for (int i = 0; i < runs; ++i);
|
||||
for (int i = 0; i < runs; ++i){
|
||||
string insert = "\nint_insert, '";
|
||||
string succ_lookup = "\nint_succ_lookup, '";
|
||||
string nosucc_lookup = "\nint_nosucc_lookup, '";
|
||||
@ -85,16 +88,17 @@ void string_test_aggregate(T map, int runs){
|
||||
nosucc_lookup += string{name(map)} +"'" ;
|
||||
delet += string{name(map)} + "'" ;
|
||||
for ( auto size : sizes){
|
||||
vector<float> results = string_test(map, size);
|
||||
vector<int> results = string_test(map, size);
|
||||
|
||||
insert += ", " + std::to_string(results[0]);
|
||||
succ_lookup += ", " + std::to_string(results[1]);
|
||||
nosucc_lookup +=", " + std::to_string(results[2]);
|
||||
delet += ", " + std::to_string(results[3]);
|
||||
std::this_thread::sleep_for(seconds(5));
|
||||
}
|
||||
output << insert << succ_lookup << nosucc_lookup << delet;
|
||||
cout << insert << succ_lookup << nosucc_lookup << delet;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -35,8 +35,8 @@ void prepare(google::sparse_hash_map<int, int>& map, int size){
|
||||
}
|
||||
|
||||
template <class T>
|
||||
vector<float> int_test(T testmap, int size){
|
||||
vector<float> results; // insert, lookup, unsuccesful lookup, delete times
|
||||
vector<int> int_test(T testmap, int size){
|
||||
vector<int> results; // insert, lookup, unsuccesful lookup, delete times
|
||||
vector<int> sample_keys; // get a sample of keys to lookup and later delete
|
||||
|
||||
// unsuccesful lookup keys
|
||||
@ -113,6 +113,7 @@ vector<float> int_test(T testmap, int size){
|
||||
time_point<steady_clock> delete_end = steady_clock::now();
|
||||
auto delete_time = (duration_cast<nanoseconds>(delete_end - delete_start) - vector_acces_time) / 10000;
|
||||
results.push_back(delete_time.count());
|
||||
testmap.clear();
|
||||
return results;
|
||||
|
||||
}
|
||||
@ -122,8 +123,8 @@ vector<float> int_test(T testmap, int size){
|
||||
|
||||
|
||||
template <class T>
|
||||
vector<float> string_test(T map, int size){
|
||||
vector<float> results; // insert, lookup, unsuccesful lookup, delete times
|
||||
vector<int> string_test(T map, int size){
|
||||
vector<int> results; // insert, lookup, unsuccesful lookup, delete times
|
||||
vector<string> sample_keys; // get a sample of keys to lookup and later delete
|
||||
|
||||
// unsuccesful lookup keys
|
||||
@ -182,7 +183,7 @@ vector<float> string_test(T map, int size){
|
||||
// unsuccesful lookup test
|
||||
time_point<steady_clock> unlookup_start = steady_clock::now();
|
||||
for (auto key : nonkeys){
|
||||
if (testmap[key] == "") cout << "WTF";
|
||||
if (testmap[key] == "a") cout << "WTF";
|
||||
}
|
||||
time_point<steady_clock> unlookup_end = steady_clock::now();
|
||||
auto unlookup_time = (duration_cast<nanoseconds>(unlookup_end - unlookup_start) - vector_acces_time) / 10000 ;
|
||||
@ -199,6 +200,7 @@ vector<float> string_test(T map, int size){
|
||||
time_point<steady_clock> delete_end = steady_clock::now();
|
||||
auto delete_time = (duration_cast<nanoseconds>(delete_end - delete_start) - vector_acces_time) / 10000;
|
||||
results.push_back(delete_time.count());
|
||||
testmap.clear();
|
||||
return results;
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user