From 625993dfbb085a3cde7492eda8ec1cdc1ee39a78 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Tue, 15 Jul 2014 16:53:13 -0700 Subject: Use VDSO for clock_gettime(2) and gettimeofday(2). Bug: 15387103 Change-Id: Ifc3608ea65060c1dc38120b10b6e79874f182a36 --- benchmarks/time_benchmark.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'benchmarks/time_benchmark.cpp') diff --git a/benchmarks/time_benchmark.cpp b/benchmarks/time_benchmark.cpp index 3bf8c07f6..0a146aef7 100644 --- a/benchmarks/time_benchmark.cpp +++ b/benchmarks/time_benchmark.cpp @@ -16,6 +16,7 @@ #include "benchmark.h" +#include #include #if defined(__BIONIC__) @@ -41,7 +42,7 @@ BENCHMARK(BM_time_localtime_tz); static void BM_time_clock_gettime(int iters) { StartBenchmarkTiming(); - struct timespec t; + timespec t; for (int i = 0; i < iters; ++i) { clock_gettime(CLOCK_MONOTONIC, &t); } @@ -49,3 +50,50 @@ static void BM_time_clock_gettime(int iters) { StopBenchmarkTiming(); } BENCHMARK(BM_time_clock_gettime); + +static void BM_time_clock_gettime_syscall(int iters) { + StartBenchmarkTiming(); + + timespec t; + for (int i = 0; i < iters; ++i) { + syscall(__NR_clock_gettime, CLOCK_MONOTONIC, &t); + } + + StopBenchmarkTiming(); +} +BENCHMARK(BM_time_clock_gettime_syscall); + +static void BM_time_gettimeofday(int iters) { + StartBenchmarkTiming(); + + timeval tv; + for (int i = 0; i < iters; ++i) { + gettimeofday(&tv, NULL); + } + + StopBenchmarkTiming(); +} +BENCHMARK(BM_time_gettimeofday); + +static void BM_time_gettimeofday_syscall(int iters) { + StartBenchmarkTiming(); + + timeval tv; + for (int i = 0; i < iters; ++i) { + syscall(__NR_gettimeofday, &tv, NULL); + } + + StopBenchmarkTiming(); +} +BENCHMARK(BM_time_gettimeofday_syscall); + +static void BM_time_time(int iters) { + StartBenchmarkTiming(); + + for (int i = 0; i < iters; ++i) { + time(NULL); + } + + StopBenchmarkTiming(); +} +BENCHMARK(BM_time_time); -- cgit v1.2.3