MOREOPTIONS
This commit is contained in:
		
							
								
								
									
										186
									
								
								results.csv
									
									
									
									
									
								
							
							
						
						
									
										186
									
								
								results.csv
									
									
									
									
									
								
							@@ -446,4 +446,188 @@ int_delete, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >',
 | 
				
			|||||||
int_insert, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 159, 176, 161, 169, 190, 170, 177, 190, 200, 188, 193, 198, 203, 210
 | 
					int_insert, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 159, 176, 161, 169, 190, 170, 177, 190, 200, 188, 193, 198, 203, 210
 | 
				
			||||||
int_succ_lookup, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 126, 106, 96, 102, 107, 101, 105, 115, 113, 112, 112, 122, 118, 121
 | 
					int_succ_lookup, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 126, 106, 96, 102, 107, 101, 105, 115, 113, 112, 112, 122, 118, 121
 | 
				
			||||||
int_nosucc_lookup, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 292, 201, 160, 178, 182, 166, 177, 192, 189, 178, 182, 189, 195, 203
 | 
					int_nosucc_lookup, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 292, 201, 160, 178, 182, 166, 177, 192, 189, 178, 182, 189, 195, 203
 | 
				
			||||||
int_delete, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 142, 112, 99, 104, 113, 110, 112, 122, 121, 119, 115, 134, 132, 137
 | 
					int_delete, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 142, 112, 99, 104, 113, 110, 112, 122, 121, 119, 115, 134, 132, 137
 | 
				
			||||||
 | 
					int_insert, 'std::unordered_map<int, int, absl::hash_internal::Hash<int> >', 333, 344, 214, 282
 | 
				
			||||||
 | 
					int_succ_lookup, 'std::unordered_map<int, int, absl::hash_internal::Hash<int> >', 148, 175, 161, 136
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'std::unordered_map<int, int, absl::hash_internal::Hash<int> >', 367, 1313, 1279, 1878
 | 
				
			||||||
 | 
					int_delete, 'std::unordered_map<int, int, absl::hash_internal::Hash<int> >', 105, 203, 241, 278
 | 
				
			||||||
 | 
					int_insert, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 330, 320, 426, 385
 | 
				
			||||||
 | 
					int_succ_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 152, 249, 300, 283
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 542, 1197, 2130, 2253
 | 
				
			||||||
 | 
					int_delete, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 226, 317, 385, 364
 | 
				
			||||||
 | 
					int_insert, 'google::sparse_hash_map<int, int, absl::hash_internal::Hash<int> >', 321, 175, 155, 224
 | 
				
			||||||
 | 
					int_succ_lookup, 'google::sparse_hash_map<int, int, absl::hash_internal::Hash<int> >', 57, 50, 45, 70
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'google::sparse_hash_map<int, int, absl::hash_internal::Hash<int> >', 668, 823, 156, 1544
 | 
				
			||||||
 | 
					int_delete, 'google::sparse_hash_map<int, int, absl::hash_internal::Hash<int> >', 68, 52, 60, 68
 | 
				
			||||||
 | 
					int_insert, 'google::sparse_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 1076, 1280, 1192, 1528
 | 
				
			||||||
 | 
					int_succ_lookup, 'google::sparse_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 115, 159, 160, 187
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'google::sparse_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 2889, 4313, 1268, 7285
 | 
				
			||||||
 | 
					int_delete, 'google::sparse_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 132, 164, 181, 172
 | 
				
			||||||
 | 
					int_insert, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >', 27, 29, 77, 39
 | 
				
			||||||
 | 
					int_succ_lookup, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >', 12, 12, 27, 19
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >', 28, 29, 49, 41
 | 
				
			||||||
 | 
					int_delete, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >', 11, 11, 23, 13
 | 
				
			||||||
 | 
					int_insert, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 191, 185, 301, 191
 | 
				
			||||||
 | 
					int_succ_lookup, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 133, 98, 147, 109
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 367, 193, 212, 193
 | 
				
			||||||
 | 
					int_delete, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 93, 109, 169, 116
 | 
				
			||||||
 | 
					int_insert, 'std::unordered_map<int, int, absl::hash_internal::Hash<int> >'
 | 
				
			||||||
 | 
					int_succ_lookup, 'std::unordered_map<int, int, absl::hash_internal::Hash<int> >'
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'std::unordered_map<int, int, absl::hash_internal::Hash<int> >'
 | 
				
			||||||
 | 
					int_delete, 'std::unordered_map<int, int, absl::hash_internal::Hash<int> >'
 | 
				
			||||||
 | 
					int_insert, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >'
 | 
				
			||||||
 | 
					int_succ_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >'
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >'
 | 
				
			||||||
 | 
					int_delete, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >'
 | 
				
			||||||
 | 
					int_insert, 'google::sparse_hash_map<int, int, absl::hash_internal::Hash<int> >'
 | 
				
			||||||
 | 
					int_succ_lookup, 'google::sparse_hash_map<int, int, absl::hash_internal::Hash<int> >'
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'google::sparse_hash_map<int, int, absl::hash_internal::Hash<int> >'
 | 
				
			||||||
 | 
					int_delete, 'google::sparse_hash_map<int, int, absl::hash_internal::Hash<int> >'
 | 
				
			||||||
 | 
					int_insert, 'google::sparse_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >'
 | 
				
			||||||
 | 
					int_succ_lookup, 'google::sparse_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >'
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'google::sparse_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >'
 | 
				
			||||||
 | 
					int_delete, 'google::sparse_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >'
 | 
				
			||||||
 | 
					int_insert, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >'
 | 
				
			||||||
 | 
					int_succ_lookup, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >'
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >'
 | 
				
			||||||
 | 
					int_delete, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >'
 | 
				
			||||||
 | 
					int_insert, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >'
 | 
				
			||||||
 | 
					int_succ_lookup, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >'
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >'
 | 
				
			||||||
 | 
					int_delete, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >'
 | 
				
			||||||
 | 
					int_insert, 'std::unordered_map<int, int, absl::hash_internal::Hash<int> >', 324, 340, 180, 213
 | 
				
			||||||
 | 
					int_succ_lookup, 'std::unordered_map<int, int, absl::hash_internal::Hash<int> >', 162, 245, 111, 116
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'std::unordered_map<int, int, absl::hash_internal::Hash<int> >', 424, 1309, 1209, 1608
 | 
				
			||||||
 | 
					int_delete, 'std::unordered_map<int, int, absl::hash_internal::Hash<int> >', 115, 332, 225, 277
 | 
				
			||||||
 | 
					int_insert, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 404, 307, 354, 369
 | 
				
			||||||
 | 
					int_succ_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 241, 238, 261, 270
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 902, 1150, 1792, 2215
 | 
				
			||||||
 | 
					int_delete, 'std::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 416, 304, 322, 350
 | 
				
			||||||
 | 
					int_insert, 'google::sparse_hash_map<int, int, absl::hash_internal::Hash<int> >', 348, 189, 158, 197
 | 
				
			||||||
 | 
					int_succ_lookup, 'google::sparse_hash_map<int, int, absl::hash_internal::Hash<int> >', 119, 52, 44, 55
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'google::sparse_hash_map<int, int, absl::hash_internal::Hash<int> >', 723, 808, 158, 1498
 | 
				
			||||||
 | 
					int_delete, 'google::sparse_hash_map<int, int, absl::hash_internal::Hash<int> >', 60, 50, 61, 58
 | 
				
			||||||
 | 
					int_insert, 'google::sparse_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 1252, 1324, 1230, 1544
 | 
				
			||||||
 | 
					int_succ_lookup, 'google::sparse_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 115, 150, 151, 183
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'google::sparse_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 2345, 4411, 1242, 7209
 | 
				
			||||||
 | 
					int_delete, 'google::sparse_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 122, 206, 173, 169
 | 
				
			||||||
 | 
					int_insert, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >', 25, 164, 87, 45
 | 
				
			||||||
 | 
					int_succ_lookup, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >', 10, 29, 25, 20
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >', 25, 45, 79, 42
 | 
				
			||||||
 | 
					int_delete, 'google::dense_hash_map<int, int, absl::hash_internal::Hash<int> >', 10, 18, 49, 13
 | 
				
			||||||
 | 
					int_insert, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 171, 258, 184, 179
 | 
				
			||||||
 | 
					int_succ_lookup, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 99, 145, 102, 109
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 164, 317, 167, 182
 | 
				
			||||||
 | 
					int_delete, 'google::dense_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 96, 200, 121, 113
 | 
				
			||||||
 | 
					int_insert, 'absl::node_hash_map<int, int>', 61, 116, 80, 91
 | 
				
			||||||
 | 
					int_succ_lookup, 'absl::node_hash_map<int, int>', 19, 91, 43, 46
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'absl::node_hash_map<int, int>', 416, 87, 84, 89
 | 
				
			||||||
 | 
					int_delete, 'absl::node_hash_map<int, int>', 114, 108, 126, 115
 | 
				
			||||||
 | 
					int_insert, 'absl::node_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 260, 173, 190, 195
 | 
				
			||||||
 | 
					int_succ_lookup, 'absl::node_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 395, 146, 179, 180
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'absl::node_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 1363, 147, 150, 164
 | 
				
			||||||
 | 
					int_delete, 'absl::node_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 180, 160, 198, 193
 | 
				
			||||||
 | 
					int_insert, 'absl::flat_hash_map<int, int>', 29, 29, 67, 54
 | 
				
			||||||
 | 
					int_succ_lookup, 'absl::flat_hash_map<int, int>', 8, 9, 60, 38
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'absl::flat_hash_map<int, int>', 132, 36, 97, 52
 | 
				
			||||||
 | 
					int_delete, 'absl::flat_hash_map<int, int>', 24, 22, 45, 34
 | 
				
			||||||
 | 
					int_insert, 'absl::flat_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 279, 164, 172, 268
 | 
				
			||||||
 | 
					int_succ_lookup, 'absl::flat_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 134, 110, 127, 252
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'absl::flat_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 732, 147, 143, 205
 | 
				
			||||||
 | 
					int_delete, 'absl::flat_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 190, 88, 116, 147
 | 
				
			||||||
 | 
					int_insert, 'tsl::sparse_map<int, int, absl::hash_internal::Hash<int> >', 89, 63, 233, 112
 | 
				
			||||||
 | 
					int_succ_lookup, 'tsl::sparse_map<int, int, absl::hash_internal::Hash<int> >', 21, 14, 77, 27
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'tsl::sparse_map<int, int, absl::hash_internal::Hash<int> >', 96, 79, 218, 91
 | 
				
			||||||
 | 
					int_delete, 'tsl::sparse_map<int, int, absl::hash_internal::Hash<int> >', 46, 40, 51, 44
 | 
				
			||||||
 | 
					int_insert, 'tsl::sparse_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 681, 448, 424, 561
 | 
				
			||||||
 | 
					int_succ_lookup, 'tsl::sparse_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 99, 114, 122, 124
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'tsl::sparse_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 751, 469, 427, 719
 | 
				
			||||||
 | 
					int_delete, 'tsl::sparse_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 246, 308, 304, 524
 | 
				
			||||||
 | 
					int_insert, 'tsl::robin_map<int, int, absl::hash_internal::Hash<int> >', 18, 27, 29, 47
 | 
				
			||||||
 | 
					int_succ_lookup, 'tsl::robin_map<int, int, absl::hash_internal::Hash<int> >', 10, 21, 26, 24
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'tsl::robin_map<int, int, absl::hash_internal::Hash<int> >', 21, 28, 30, 32
 | 
				
			||||||
 | 
					int_delete, 'tsl::robin_map<int, int, absl::hash_internal::Hash<int> >', 18, 22, 118, 26
 | 
				
			||||||
 | 
					int_insert, 'tsl::robin_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 136, 150, 147, 159
 | 
				
			||||||
 | 
					int_succ_lookup, 'tsl::robin_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 102, 101, 108, 108
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'tsl::robin_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 122, 118, 111, 122
 | 
				
			||||||
 | 
					int_delete, 'tsl::robin_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 124, 133, 117, 130
 | 
				
			||||||
 | 
					int_insert, 'tsl::hopscotch_map<int, int, absl::hash_internal::Hash<int> >', 43, 102, 74, 78
 | 
				
			||||||
 | 
					int_succ_lookup, 'tsl::hopscotch_map<int, int, absl::hash_internal::Hash<int> >', 12, 40, 25, 24
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'tsl::hopscotch_map<int, int, absl::hash_internal::Hash<int> >', 227, 108, 85, 83
 | 
				
			||||||
 | 
					int_delete, 'tsl::hopscotch_map<int, int, absl::hash_internal::Hash<int> >', 18, 24, 53, 26
 | 
				
			||||||
 | 
					int_insert, 'tsl::hopscotch_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 189, 203, 167, 223
 | 
				
			||||||
 | 
					int_succ_lookup, 'tsl::hopscotch_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 129, 101, 105, 117
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'tsl::hopscotch_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 1117, 210, 163, 217
 | 
				
			||||||
 | 
					int_delete, 'tsl::hopscotch_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 128, 102, 108, 128
 | 
				
			||||||
 | 
					int_insert, 'boost::unordered::unordered_map<int, int, absl::hash_internal::Hash<int> >', 79, 309, 178, 192
 | 
				
			||||||
 | 
					int_succ_lookup, 'boost::unordered::unordered_map<int, int, absl::hash_internal::Hash<int> >', 31, 132, 77, 86
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'boost::unordered::unordered_map<int, int, absl::hash_internal::Hash<int> >', 86, 191, 185, 225
 | 
				
			||||||
 | 
					int_delete, 'boost::unordered::unordered_map<int, int, absl::hash_internal::Hash<int> >', 81, 379, 192, 366
 | 
				
			||||||
 | 
					int_insert, 'boost::unordered::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 420, 517, 432, 285
 | 
				
			||||||
 | 
					int_succ_lookup, 'boost::unordered::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 264, 313, 395, 254
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'boost::unordered::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 645, 277, 229, 245
 | 
				
			||||||
 | 
					int_delete, 'boost::unordered::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 575, 382, 355, 321
 | 
				
			||||||
 | 
					int_insert, 'ska::unordered_map<int, int, absl::hash_internal::Hash<int> >', 64, 136, 272, 212
 | 
				
			||||||
 | 
					int_succ_lookup, 'ska::unordered_map<int, int, absl::hash_internal::Hash<int> >', 20, 39, 67, 83
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'ska::unordered_map<int, int, absl::hash_internal::Hash<int> >', 72, 114, 278, 210
 | 
				
			||||||
 | 
					int_delete, 'ska::unordered_map<int, int, absl::hash_internal::Hash<int> >', 55, 202, 245, 222
 | 
				
			||||||
 | 
					int_insert, 'ska::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 408, 448, 328, 355
 | 
				
			||||||
 | 
					int_succ_lookup, 'ska::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 200, 410, 294, 259
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'ska::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 264, 403, 221, 245
 | 
				
			||||||
 | 
					int_delete, 'ska::unordered_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 216, 318, 465, 204
 | 
				
			||||||
 | 
					int_insert, 'ska::bytell_hash_map<int, int, absl::hash_internal::Hash<int> >', 48, 60, 91, 64
 | 
				
			||||||
 | 
					int_succ_lookup, 'ska::bytell_hash_map<int, int, absl::hash_internal::Hash<int> >', 19, 17, 62, 22
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'ska::bytell_hash_map<int, int, absl::hash_internal::Hash<int> >', 73, 65, 106, 73
 | 
				
			||||||
 | 
					int_delete, 'ska::bytell_hash_map<int, int, absl::hash_internal::Hash<int> >', 24, 23, 104, 28
 | 
				
			||||||
 | 
					int_insert, 'ska::bytell_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 254, 258, 181, 208
 | 
				
			||||||
 | 
					int_succ_lookup, 'ska::bytell_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 179, 199, 116, 122
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'ska::bytell_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 210, 191, 169, 207
 | 
				
			||||||
 | 
					int_delete, 'ska::bytell_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 220, 119, 126, 145
 | 
				
			||||||
 | 
					int_insert, 'ska::flat_hash_map<int, int, absl::hash_internal::Hash<int> >', 27, 33, 41, 112
 | 
				
			||||||
 | 
					int_succ_lookup, 'ska::flat_hash_map<int, int, absl::hash_internal::Hash<int> >', 10, 15, 35, 46
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'ska::flat_hash_map<int, int, absl::hash_internal::Hash<int> >', 31, 35, 139, 268
 | 
				
			||||||
 | 
					int_delete, 'ska::flat_hash_map<int, int, absl::hash_internal::Hash<int> >', 28, 18, 102, 72
 | 
				
			||||||
 | 
					int_insert, 'ska::flat_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 246, 352, 367, 279
 | 
				
			||||||
 | 
					int_succ_lookup, 'ska::flat_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 157, 208, 163, 184
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'ska::flat_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 200, 305, 126, 276
 | 
				
			||||||
 | 
					int_delete, 'ska::flat_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 366, 273, 269, 329
 | 
				
			||||||
 | 
					int_insert, 'phmap::parallel_flat_hash_map<int, int, absl::hash_internal::Hash<int> >', 51, 134, 208, 119
 | 
				
			||||||
 | 
					int_succ_lookup, 'phmap::parallel_flat_hash_map<int, int, absl::hash_internal::Hash<int> >', 18, 32, 192, 66
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'phmap::parallel_flat_hash_map<int, int, absl::hash_internal::Hash<int> >', 322, 112, 125, 156
 | 
				
			||||||
 | 
					int_delete, 'phmap::parallel_flat_hash_map<int, int, absl::hash_internal::Hash<int> >', 104, 64, 49, 222
 | 
				
			||||||
 | 
					int_insert, 'phmap::parallel_flat_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 249, 484, 380, 570
 | 
				
			||||||
 | 
					int_succ_lookup, 'phmap::parallel_flat_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 262, 228, 251, 173
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'phmap::parallel_flat_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 719, 239, 162, 325
 | 
				
			||||||
 | 
					int_delete, 'phmap::parallel_flat_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 352, 306, 247, 185
 | 
				
			||||||
 | 
					int_insert, 'phmap::parallel_node_hash_map<int, int, absl::hash_internal::Hash<int> >', 160, 186, 154, 307
 | 
				
			||||||
 | 
					int_succ_lookup, 'phmap::parallel_node_hash_map<int, int, absl::hash_internal::Hash<int> >', 56, 83, 63, 78
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'phmap::parallel_node_hash_map<int, int, absl::hash_internal::Hash<int> >', 501, 212, 134, 205
 | 
				
			||||||
 | 
					int_delete, 'phmap::parallel_node_hash_map<int, int, absl::hash_internal::Hash<int> >', 114, 271, 151, 176
 | 
				
			||||||
 | 
					int_insert, 'phmap::parallel_node_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 379, 510, 263, 312
 | 
				
			||||||
 | 
					int_succ_lookup, 'phmap::parallel_node_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 177, 245, 178, 186
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'phmap::parallel_node_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 1180, 342, 209, 249
 | 
				
			||||||
 | 
					int_delete, 'phmap::parallel_node_hash_map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 141, 177, 196, 212
 | 
				
			||||||
 | 
					int_insert, 'emilib::HashMap<int, int, absl::hash_internal::Hash<int> >', 18, 30, 36, 37
 | 
				
			||||||
 | 
					int_succ_lookup, 'emilib::HashMap<int, int, absl::hash_internal::Hash<int> >', 12, 49, 25, 41
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'emilib::HashMap<int, int, absl::hash_internal::Hash<int> >', 21, 55, 33, 35
 | 
				
			||||||
 | 
					int_delete, 'emilib::HashMap<int, int, absl::hash_internal::Hash<int> >', 9, 31, 15, 23
 | 
				
			||||||
 | 
					int_insert, 'emilib::HashMap<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 157, 195, 151, 198
 | 
				
			||||||
 | 
					int_succ_lookup, 'emilib::HashMap<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 108, 99, 117, 114
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'emilib::HashMap<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 113, 103, 118, 120
 | 
				
			||||||
 | 
					int_delete, 'emilib::HashMap<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> > >', 96, 92, 108, 103
 | 
				
			||||||
 | 
					int_insert, 'robin_hood::detail::Table<true, 80, int, int, absl::hash_internal::Hash<int>, std::equal_to<int> >', 36, 56, 32, 65
 | 
				
			||||||
 | 
					int_succ_lookup, 'robin_hood::detail::Table<true, 80, int, int, absl::hash_internal::Hash<int>, std::equal_to<int> >', 17, 26, 20, 27
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'robin_hood::detail::Table<true, 80, int, int, absl::hash_internal::Hash<int>, std::equal_to<int> >', 117, 292, 53, 429
 | 
				
			||||||
 | 
					int_delete, 'robin_hood::detail::Table<true, 80, int, int, absl::hash_internal::Hash<int>, std::equal_to<int> >', 31, 57, 54, 44
 | 
				
			||||||
 | 
					int_insert, 'robin_hood::detail::Table<true, 80, std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> >, std::equal_to<std::__cxx11::basic_string<char> > >', 189, 385, 155, 316
 | 
				
			||||||
 | 
					int_succ_lookup, 'robin_hood::detail::Table<true, 80, std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> >, std::equal_to<std::__cxx11::basic_string<char> > >', 75, 176, 102, 107
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'robin_hood::detail::Table<true, 80, std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> >, std::equal_to<std::__cxx11::basic_string<char> > >', 642, 1383, 178, 2253
 | 
				
			||||||
 | 
					int_delete, 'robin_hood::detail::Table<true, 80, std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> >, std::equal_to<std::__cxx11::basic_string<char> > >', 180, 109, 141, 171
 | 
				
			||||||
 | 
					int_insert, 'robin_hood::detail::Table<false, 80, int, int, absl::hash_internal::Hash<int>, std::equal_to<int> >', 42, 56, 60, 61
 | 
				
			||||||
 | 
					int_succ_lookup, 'robin_hood::detail::Table<false, 80, int, int, absl::hash_internal::Hash<int>, std::equal_to<int> >', 18, 56, 41, 41
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'robin_hood::detail::Table<false, 80, int, int, absl::hash_internal::Hash<int>, std::equal_to<int> >', 140, 676, 113, 975
 | 
				
			||||||
 | 
					int_delete, 'robin_hood::detail::Table<false, 80, int, int, absl::hash_internal::Hash<int>, std::equal_to<int> >', 22, 132, 79, 100
 | 
				
			||||||
 | 
					int_insert, 'robin_hood::detail::Table<false, 80, std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> >, std::equal_to<std::__cxx11::basic_string<char> > >', 144, 125, 115, 149
 | 
				
			||||||
 | 
					int_succ_lookup, 'robin_hood::detail::Table<false, 80, std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> >, std::equal_to<std::__cxx11::basic_string<char> > >', 212, 154, 150, 181
 | 
				
			||||||
 | 
					int_nosucc_lookup, 'robin_hood::detail::Table<false, 80, std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> >, std::equal_to<std::__cxx11::basic_string<char> > >', 791, 1431, 88, 2356
 | 
				
			||||||
 | 
					int_delete, 'robin_hood::detail::Table<false, 80, std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, absl::hash_internal::Hash<std::__cxx11::basic_string<char> >, std::equal_to<std::__cxx11::basic_string<char> > >', 259, 146, 142, 206
 | 
				
			||||||
| 
		
		
			 Can't render this file because it has a wrong number of fields in line 242. 
		
	 | 
@@ -7,8 +7,8 @@
 | 
				
			|||||||
vector<int> sizes = {
 | 
					vector<int> sizes = {
 | 
				
			||||||
        50000, 100000, 150000, 200000, 250000, 300000, 350000, 400000, 500000,
 | 
					        50000, 100000, 150000, 200000, 250000, 300000, 350000, 400000, 500000,
 | 
				
			||||||
        600000, 700000, 800000, 900000, 1000000,
 | 
					        600000, 700000, 800000, 900000, 1000000,
 | 
				
			||||||
        // 2000000, 3000000, 4000000, 5000000, 6000000, 7000000, 8000000, 9000000, 10000000,
 | 
					        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
 | 
					// to print type info
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -41,7 +41,7 @@ std::basic_string_view<char> name(T var) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template<class T>
 | 
					template<class T>
 | 
				
			||||||
void int_test_aggregate(T map, int runs) {
 | 
					void int_test_aggregate(T map, int runs, int maxsize=20000000) {
 | 
				
			||||||
    std::ofstream output{"results.csv", std::ios_base::app};
 | 
					    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 insert = "\nint_insert, '";
 | 
				
			||||||
@@ -54,6 +54,9 @@ void int_test_aggregate(T map, int runs) {
 | 
				
			|||||||
        nosucc_lookup += string{name(map)} + "'";
 | 
					        nosucc_lookup += string{name(map)} + "'";
 | 
				
			||||||
        delet += string{name(map)} + "'";
 | 
					        delet += string{name(map)} + "'";
 | 
				
			||||||
        for (auto size : sizes) {
 | 
					        for (auto size : sizes) {
 | 
				
			||||||
 | 
					            if (size > maxsize){
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            vector<int> results = int_test(map, size);
 | 
					            vector<int> results = int_test(map, size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            insert += ", " + std::to_string(results[0]);
 | 
					            insert += ", " + std::to_string(results[0]);
 | 
				
			||||||
@@ -70,7 +73,7 @@ void int_test_aggregate(T map, int runs) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template<class T>
 | 
					template<class T>
 | 
				
			||||||
void string_test_aggregate(T map, int runs) {
 | 
					void string_test_aggregate(T map, int runs, int maxsize=20000000) {
 | 
				
			||||||
    std::ofstream output{"results.csv", std::ios_base::app};
 | 
					    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 insert = "\nint_insert, '";
 | 
				
			||||||
@@ -83,8 +86,12 @@ void string_test_aggregate(T map, int runs) {
 | 
				
			|||||||
        nosucc_lookup += string{name(map)} + "'";
 | 
					        nosucc_lookup += string{name(map)} + "'";
 | 
				
			||||||
        delet += string{name(map)} + "'";
 | 
					        delet += string{name(map)} + "'";
 | 
				
			||||||
        for (auto size : sizes) {
 | 
					        for (auto size : sizes) {
 | 
				
			||||||
 | 
					            if (size > maxsize){
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            vector<int> results = string_test(map, size);
 | 
					            vector<int> results = string_test(map, size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            insert += ", " + std::to_string(results[0]);
 | 
					            insert += ", " + std::to_string(results[0]);
 | 
				
			||||||
            succ_lookup += ", " + std::to_string(results[1]);
 | 
					            succ_lookup += ", " + std::to_string(results[1]);
 | 
				
			||||||
            nosucc_lookup += ", " + std::to_string(results[2]);
 | 
					            nosucc_lookup += ", " + std::to_string(results[2]);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										167
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										167
									
								
								src/main.cpp
									
									
									
									
									
								
							@@ -18,84 +18,87 @@ string choicetext = "Select implementation to test: '-i 1 2 3 4' or '-i 1,2,3'.
 | 
				
			|||||||
"8. emilk's emilib:: hashmap(1) \n"
 | 
					"8. emilk's emilib:: hashmap(1) \n"
 | 
				
			||||||
"9. martin's robin_hood:: hashmaps(2) \n";
 | 
					"9. martin's robin_hood:: hashmaps(2) \n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// default arguments
 | 
				
			||||||
 | 
					vector<int> hashmaps = {1, 2, 3, 4, 5, 6, 7, 8, 9};
 | 
				
			||||||
 | 
					bool use_abseil_hash = false;
 | 
				
			||||||
 | 
					int runs = 1;
 | 
				
			||||||
 | 
					int maxsize = 50000000;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(int argc, char** argv) {
 | 
					int main(int argc, char** argv) {
 | 
				
			||||||
    CLI::App app{"Hashmap benchmarks"};
 | 
					    CLI::App app{"Hashmap benchmarks"};
 | 
				
			||||||
    vector<int> hashmaps = {1, 2, 3, 4, 5, 6, 7, 8, 9};
 | 
					 | 
				
			||||||
    app.add_option("-i,--implementation", hashmaps, choicetext )->delimiter(',');
 | 
					    app.add_option("-i,--implementation", hashmaps, choicetext )->delimiter(',');
 | 
				
			||||||
    bool use_abseil_hash = false;
 | 
					 | 
				
			||||||
    app.add_option("-a,--abseil", use_abseil_hash, "use absl::Hash, default is false");
 | 
					    app.add_option("-a,--abseil", use_abseil_hash, "use absl::Hash, default is false");
 | 
				
			||||||
    int runs = 1;
 | 
					 | 
				
			||||||
    app.add_option("-r,--runs", runs, "total runs for each map, default is 1");
 | 
					    app.add_option("-r,--runs", runs, "total runs for each map, default is 1");
 | 
				
			||||||
 | 
					    app.add_option("-m, --maxsize", maxsize, "The max size of the hashmaps to test for. Default is 50 million.");
 | 
				
			||||||
    CLI11_PARSE(app, argc, argv);
 | 
					    CLI11_PARSE(app, argc, argv);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    time_point<steady_clock> start_test = steady_clock::now();
 | 
					    time_point<steady_clock> start_test = steady_clock::now();
 | 
				
			||||||
    if (use_abseil_hash) {
 | 
					    if (use_abseil_hash) {
 | 
				
			||||||
        for (auto i : hashmaps) {
 | 
					        for (auto i : hashmaps) {
 | 
				
			||||||
            switch (i) {
 | 
					            switch (i) {
 | 
				
			||||||
                case 1: {
 | 
					                case 1: {
 | 
				
			||||||
                    int_test_aggregate(std::unordered_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(std::unordered_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(std::unordered_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(std::unordered_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                case 2: {
 | 
					                case 2: {
 | 
				
			||||||
                    int_test_aggregate(google::sparse_hash_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(google::sparse_hash_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(google::sparse_hash_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(google::sparse_hash_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(google::dense_hash_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(google::dense_hash_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(google::dense_hash_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(google::dense_hash_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 3: {
 | 
					                case 3: {
 | 
				
			||||||
                    int_test_aggregate(absl::node_hash_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(absl::node_hash_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(absl::node_hash_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(absl::node_hash_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(absl::flat_hash_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(absl::flat_hash_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(absl::flat_hash_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(absl::flat_hash_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 4: {
 | 
					                case 4: {
 | 
				
			||||||
                    int_test_aggregate(tsl::sparse_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(tsl::sparse_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(tsl::sparse_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(tsl::sparse_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    // int_test_aggregate(tsl::array_map<int, int>{}, runs);
 | 
					                    // int_test_aggregate(tsl::array_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    // string_test_aggregate(tsl::array_map<string, string>{}, runs);
 | 
					                    // string_test_aggregate(tsl::array_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    // int_test_aggregate(tsl::ordered_map<int, int>{}, runs);
 | 
					                    // int_test_aggregate(tsl::ordered_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    // string_test_aggregate(tsl::ordered_map<string, string>{}, runs);
 | 
					                    // string_test_aggregate(tsl::ordered_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(tsl::robin_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(tsl::robin_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(tsl::robin_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(tsl::robin_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(tsl::hopscotch_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(tsl::hopscotch_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(tsl::hopscotch_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(tsl::hopscotch_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 5: {
 | 
					                case 5: {
 | 
				
			||||||
                    int_test_aggregate(boost::unordered_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(boost::unordered_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(boost::unordered_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(boost::unordered_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 6: {
 | 
					                case 6: {
 | 
				
			||||||
                    int_test_aggregate(ska::unordered_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(ska::unordered_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(ska::unordered_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(ska::unordered_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(ska::bytell_hash_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(ska::bytell_hash_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(ska::bytell_hash_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(ska::bytell_hash_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(ska::flat_hash_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(ska::flat_hash_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(ska::flat_hash_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(ska::flat_hash_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 7: {
 | 
					                case 7: {
 | 
				
			||||||
                    int_test_aggregate(phmap::parallel_flat_hash_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(phmap::parallel_flat_hash_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(phmap::parallel_flat_hash_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(phmap::parallel_flat_hash_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(phmap::parallel_node_hash_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(phmap::parallel_node_hash_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(phmap::parallel_node_hash_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(phmap::parallel_node_hash_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 8: {
 | 
					                case 8: {
 | 
				
			||||||
                    int_test_aggregate(emilib::HashMap<int, int>{}, runs);
 | 
					                    int_test_aggregate(emilib::HashMap<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(emilib::HashMap<string, string>{}, runs);
 | 
					                    string_test_aggregate(emilib::HashMap<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 9: {
 | 
					                case 9: {
 | 
				
			||||||
                    int_test_aggregate(robin_hood::unordered_flat_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(robin_hood::unordered_flat_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(robin_hood::unordered_flat_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(robin_hood::unordered_flat_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(robin_hood::unordered_node_map<int, int>{}, runs);
 | 
					                    int_test_aggregate(robin_hood::unordered_node_map<int, int>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(robin_hood::unordered_node_map<string, string>{}, runs);
 | 
					                    string_test_aggregate(robin_hood::unordered_node_map<string, string>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -105,69 +108,69 @@ int main(int argc, char** argv) {
 | 
				
			|||||||
        for (auto i : hashmaps) {
 | 
					        for (auto i : hashmaps) {
 | 
				
			||||||
            switch (i) {
 | 
					            switch (i) {
 | 
				
			||||||
                case 1: {
 | 
					                case 1: {
 | 
				
			||||||
                    int_test_aggregate(std::unordered_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(std::unordered_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(std::unordered_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(std::unordered_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                case 2: {
 | 
					                case 2: {
 | 
				
			||||||
                    int_test_aggregate(google::sparse_hash_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(google::sparse_hash_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(google::sparse_hash_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(google::sparse_hash_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(google::dense_hash_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(google::dense_hash_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(google::dense_hash_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(google::dense_hash_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 3: {
 | 
					                case 3: {
 | 
				
			||||||
                    int_test_aggregate(absl::node_hash_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(absl::node_hash_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(absl::node_hash_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(absl::node_hash_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(absl::flat_hash_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(absl::flat_hash_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(absl::flat_hash_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(absl::flat_hash_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 4: {
 | 
					                case 4: {
 | 
				
			||||||
                    int_test_aggregate(tsl::sparse_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(tsl::sparse_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(tsl::sparse_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(tsl::sparse_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    // int_test_aggregate(tsl::array_map<int, int, Hash<int>>{}, runs);
 | 
					                    // int_test_aggregate(tsl::array_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    // string_test_aggregate(tsl::array_map<string, string, Hash<string>>{}, runs);
 | 
					                    // string_test_aggregate(tsl::array_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    // int_test_aggregate(tsl::ordered_map<int, int, Hash<int>>{}, runs);
 | 
					                    // int_test_aggregate(tsl::ordered_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    // string_test_aggregate(tsl::ordered_map<string, string, Hash<string>>{}, runs);
 | 
					                    // string_test_aggregate(tsl::ordered_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(tsl::robin_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(tsl::robin_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(tsl::robin_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(tsl::robin_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(tsl::hopscotch_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(tsl::hopscotch_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(tsl::hopscotch_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(tsl::hopscotch_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 5: {
 | 
					                case 5: {
 | 
				
			||||||
                    int_test_aggregate(boost::unordered_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(boost::unordered_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(boost::unordered_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(boost::unordered_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 6: {
 | 
					                case 6: {
 | 
				
			||||||
                    int_test_aggregate(ska::unordered_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(ska::unordered_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(ska::unordered_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(ska::unordered_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(ska::bytell_hash_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(ska::bytell_hash_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(ska::bytell_hash_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(ska::bytell_hash_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(ska::flat_hash_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(ska::flat_hash_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(ska::flat_hash_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(ska::flat_hash_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 7: {
 | 
					                case 7: {
 | 
				
			||||||
                    int_test_aggregate(phmap::parallel_flat_hash_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(phmap::parallel_flat_hash_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(phmap::parallel_flat_hash_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(phmap::parallel_flat_hash_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(phmap::parallel_node_hash_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(phmap::parallel_node_hash_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(phmap::parallel_node_hash_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(phmap::parallel_node_hash_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 8: {
 | 
					                case 8: {
 | 
				
			||||||
                    int_test_aggregate(emilib::HashMap<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(emilib::HashMap<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(emilib::HashMap<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(emilib::HashMap<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case 9: {
 | 
					                case 9: {
 | 
				
			||||||
                    int_test_aggregate(robin_hood::unordered_flat_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(robin_hood::unordered_flat_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(robin_hood::unordered_flat_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(robin_hood::unordered_flat_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    int_test_aggregate(robin_hood::unordered_node_map<int, int, Hash<int>>{}, runs);
 | 
					                    int_test_aggregate(robin_hood::unordered_node_map<int, int, Hash<int>>{}, runs, maxsize);
 | 
				
			||||||
                    string_test_aggregate(robin_hood::unordered_node_map<string, string, Hash<string>>{}, runs);
 | 
					                    string_test_aggregate(robin_hood::unordered_node_map<string, string, Hash<string>>{}, runs, maxsize);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -177,8 +180,8 @@ int main(int argc, char** argv) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    time_point<steady_clock> end_test = steady_clock::now();
 | 
					    time_point<steady_clock> end_test = steady_clock::now();
 | 
				
			||||||
    std::cout << "\n\n 30 runs for all tests for 1 map: " << duration_cast<seconds>(end_test - start_test).count()
 | 
					    std::cout << "\n\n" << runs << " runs for all tests for " << hashmaps.size() << "maps: " 
 | 
				
			||||||
    << " seconds\n\n";
 | 
					    << duration_cast<seconds>(end_test - start_test).count() << " seconds\n\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user