performance_tests: report small time per call in microseconds

This is to not report quick operations as 0 milliseconds
This commit is contained in:
moneromooo-monero 2017-02-10 19:43:06 +00:00
parent cadada2d65
commit 7403e56fb4
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3
1 changed files with 13 additions and 3 deletions

View File

@ -95,10 +95,10 @@ public:
int elapsed_time() const { return m_elapsed; }
int time_per_call() const
int time_per_call(int scale = 1) const
{
static_assert(0 < T::loop_count, "T::loop_count must be greater than 0");
return m_elapsed / T::loop_count;
return m_elapsed * scale / T::loop_count;
}
private:
@ -130,7 +130,17 @@ void run_test(const char* test_name)
std::cout << test_name << " - OK:\n";
std::cout << " loop count: " << T::loop_count << '\n';
std::cout << " elapsed: " << runner.elapsed_time() << " ms\n";
std::cout << " time per call: " << runner.time_per_call() << " ms/call\n" << std::endl;
const char *unit = "ms";
int time_per_call = runner.time_per_call();
if (time_per_call < 30000) {
time_per_call = runner.time_per_call(1000);
#ifdef _WIN32
unit = "\xb5s";
#else
unit = "µs";
#endif
}
std::cout << " time per call: " << time_per_call << " " << unit << "/call\n" << std::endl;
}
else
{