diff --git a/liblog/tests/liblog_benchmark.cpp b/liblog/tests/liblog_benchmark.cpp index 706a0f6ae..c2f3f837a 100644 --- a/liblog/tests/liblog_benchmark.cpp +++ b/liblog/tests/liblog_benchmark.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -107,6 +108,65 @@ static void BM_clock_overhead(benchmark::State& state) { } BENCHMARK(BM_clock_overhead); +static void do_clock_overhead(benchmark::State& state, clockid_t clk_id) { + timespec t; + while (state.KeepRunning()) { + clock_gettime(clk_id, &t); + } +} + +static void BM_time_clock_gettime_REALTIME(benchmark::State& state) { + do_clock_overhead(state, CLOCK_REALTIME); +} +BENCHMARK(BM_time_clock_gettime_REALTIME); + +static void BM_time_clock_gettime_MONOTONIC(benchmark::State& state) { + do_clock_overhead(state, CLOCK_MONOTONIC); +} +BENCHMARK(BM_time_clock_gettime_MONOTONIC); + +static void BM_time_clock_gettime_MONOTONIC_syscall(benchmark::State& state) { + timespec t; + while (state.KeepRunning()) { + syscall(__NR_clock_gettime, CLOCK_MONOTONIC, &t); + } +} +BENCHMARK(BM_time_clock_gettime_MONOTONIC_syscall); + +static void BM_time_clock_gettime_MONOTONIC_RAW(benchmark::State& state) { + do_clock_overhead(state, CLOCK_MONOTONIC_RAW); +} +BENCHMARK(BM_time_clock_gettime_MONOTONIC_RAW); + +static void BM_time_clock_gettime_BOOTTIME(benchmark::State& state) { + do_clock_overhead(state, CLOCK_BOOTTIME); +} +BENCHMARK(BM_time_clock_gettime_BOOTTIME); + +static void BM_time_clock_getres_MONOTONIC(benchmark::State& state) { + timespec t; + while (state.KeepRunning()) { + clock_getres(CLOCK_MONOTONIC, &t); + } +} +BENCHMARK(BM_time_clock_getres_MONOTONIC); + +static void BM_time_clock_getres_MONOTONIC_syscall(benchmark::State& state) { + timespec t; + while (state.KeepRunning()) { + syscall(__NR_clock_getres, CLOCK_MONOTONIC, &t); + } +} +BENCHMARK(BM_time_clock_getres_MONOTONIC_syscall); + +static void BM_time_time(benchmark::State& state) { + while (state.KeepRunning()) { + time_t now; + now = time(&now); + } +} +BENCHMARK(BM_time_time); + /* * Measure the time it takes to submit the android logging data to pstore */