done
This commit is contained in:
		@@ -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")
 | 
			
		||||
set(CMAKE_CXX_FLAGS "-O3 -flto=thin -march=native")
 | 
			
		||||
add_executable(another_studproject 
 | 
			
		||||
                ./src/includes/generator.h
 | 
			
		||||
                ./src/generator.cpp
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										34
									
								
								main.cpp
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								main.cpp
									
									
									
									
									
								
							@@ -12,8 +12,36 @@
 | 
			
		||||
// we can use ^ to switch the map implementations to that
 | 
			
		||||
// we can add some cli handling so we can specify which maps to tests (or all)
 | 
			
		||||
int main() {
 | 
			
		||||
    string_test(std::unordered_map<std::string, std::string>{}, 10);
 | 
			
		||||
    int_test(std::unordered_map<int, int>{}, 10);
 | 
			
		||||
    time_point<steady_clock> start_test = steady_clock::now();
 | 
			
		||||
    string_test(std::unordered_map<std::string, std::string>{}, 1); // process gets killed for sizes >35000
 | 
			
		||||
    int_test(std::unordered_map<int, int>{}, 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
 | 
			
		||||
    // so it'll take ~3 hours per map if we want 30 runs per test
 | 
			
		||||
    /* if the other maps have about the same operation times ************
 | 
			
		||||
 | 
			
		||||
    // maps to benchmark:
 | 
			
		||||
    1. Google dense_hash_map
 | 
			
		||||
    2. Google sparse_hash_map
 | 
			
		||||
    3. folly F14ValueMap
 | 
			
		||||
    4. folly F14NodeMap
 | 
			
		||||
    5. Tessil/ordered-map
 | 
			
		||||
    6. Tessil/array-hash
 | 
			
		||||
    7. Tessil/hopscotch-map
 | 
			
		||||
    8. Tessil/sparse-map/
 | 
			
		||||
    9. abseil node_hash_map
 | 
			
		||||
    10. abseil flat_hash_map
 | 
			
		||||
    11. Glib GHashTable
 | 
			
		||||
    12. Boost unordered_map
 | 
			
		||||
    13. Qt QHash
 | 
			
		||||
    14. skarupke/flat_hash_map
 | 
			
		||||
    15. greg7mdp/sparsepp
 | 
			
		||||
    16. greg7mdp /parallel-hashmap  (phmap::flat_hash_map and phmap::node_hash_map)
 | 
			
		||||
    17. emilk/emilib emilib::hashmap
 | 
			
		||||
    18. martinus robin_hood::unordered_node_map
 | 
			
		||||
    19. martinus/robin-hood-hashing/
 | 
			
		||||
    20. skarupke /flat_hash_map 
 | 
			
		||||
    */
 | 
			
		||||
    
 | 
			
		||||
    // test takes 52 mins for 10 runs for 1 dict
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,8 @@ std::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
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user