@@ -119,6 +119,28 @@ void test_unordered_map(
119119 milliseconds, kNumKeyValues / seconds / 1000000 .0f );
120120}
121121
122+ void process_cmdline_arguments (int argc, char * argv[], bool &verify, uint32_t &seed) {
123+ if (argc == 1 ) {
124+ return ;
125+ } else if (argc == 2 ) {
126+ if (strcmp (argv[1 ], " --no-verify" ) == 0 ) {
127+ verify = false ;
128+ return ;
129+ }
130+ } else if (argc == 4 ) {
131+ if (strcmp (argv[1 ], " --no-verify" ) == 0 || strcmp (argv[2 ], " --seed" ) == 0 ) {
132+ verify = false ;
133+ seed = std::stoi (argv[3 ]);
134+ return ;
135+ } else if (strcmp (argv[1 ], " --seed" ) == 0 || strcmp (argv[3 ], " --no-verify" ) == 0 ) {
136+ verify = false ;
137+ seed = std::stoi (argv[2 ]);
138+ return ;
139+ }
140+ }
141+ throw std::runtime_error (" Wrong number/type of arguments was provided\n " );
142+ }
143+
122144void test_correctness (
123145 std::vector<KeyValue>,
124146 std::vector<KeyValue>,
@@ -132,10 +154,12 @@ int main(int argc, char* argv[])
132154
133155 try {
134156
157+ bool verify = true ;
135158 // To recreate the same random numbers across runs of the program, set seed to a specific
136159 // number instead of a number from random_device
137160 std::random_device rd;
138161 uint32_t seed = rd ();
162+ process_cmdline_arguments (argc, argv, verify, seed);
139163 std::mt19937 rnd (seed); // mersenne_twister_engine
140164
141165 // printf("Random number generator seed = %u\n", seed);
@@ -254,10 +278,6 @@ PRINT_TIMER("iterate_hashtable ");
254278 TIMER_PRINT (" hashtable - total time for whole calculation" )
255279 printf (" %f million keys/second\n " , kNumKeyValues / (time_total / ITERATIONS / 1000 .0f ) / 1000000 .0f );
256280
257- bool verify = true ;
258- if (argc > 1 && strcmp (argv[1 ], " --no-verify" ) == 0 ) {
259- verify = false ;
260- }
261281 if (verify) {
262282 test_unordered_map (insert_kvs, delete_kvs);
263283 test_correctness (insert_kvs, delete_kvs, std::move (kvs));
0 commit comments