std::default_random_engine generator; std::uniform_int_distribution distribution(0, container.size_in_symbols()); auto dice = std::bind(distribution, generator); std::vector tester = std::vector(5*container.size_in_symbols()); std::vector slices = std::vector(5*container.size_in_symbols()); long long *measures = new long long[5*container.size_in_symbols()]; for (long i = 0, len = 5*container.size_in_symbols(); i < len; i++) tester[i] = dice(); long long max = 0; std::cout << "Measuring suffix found perfomance on direct suffix storage:" << std::endl; for (long i = 0, len = tester.size(); i < len; i++) { auto begin = std::chrono::high_resolution_clock::now(); slices[i] = container.suffix(tester[i]); auto end = std::chrono::high_resolution_clock::now(); measures[i] = std::chrono::duration_cast(end-begin).count(); if (measures[i] > max) max = measures[i]; } std::cout << "average: " << array_average(measures, tester.size()) << " ns." << std::endl; std::cout << "max: " << max << " ns." << std::endl; max = 0; std::cout << std::endl; std::cout << "Measuring suffix found perfomance on binsearch suffixes:" << std::endl; for (long i = 0, len = tester.size(); i < len; i++) { auto begin = std::chrono::high_resolution_clock::now(); slices[i] = container.suffix_with_binsearch(tester[i]); auto end = std::chrono::high_resolution_clock::now(); measures[i] = std::chrono::duration_cast(end-begin).count(); if (measures[i] > max) max = measures[i]; } std::cout << "average: " << array_average(measures, tester.size()) << " ns." << std::endl; std::cout << "max: " << max << " ns." << std::endl; max = 0; std::cout << std::endl; std::cout << "Measuring suffix found perfomance on stl_lower_bound suffixes:" << std::endl; for (long i = 0, len = tester.size(); i < len; i++) { auto begin = std::chrono::high_resolution_clock::now(); slices[i] = container.suffix_with_stl(tester[i]); auto end = std::chrono::high_resolution_clock::now(); measures[i] = std::chrono::duration_cast(end-begin).count(); if (measures[i] > max) max = measures[i]; } std::cout << "average: " << array_average(measures, tester.size()) << " ns." << std::endl; std::cout << "max: " << max << " ns." << std::endl; std::cout << std::endl;