diff options
author | Elliott Hughes <enh@google.com> | 2014-07-15 16:53:13 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2014-07-16 14:27:43 -0700 |
commit | 625993dfbb085a3cde7492eda8ec1cdc1ee39a78 (patch) | |
tree | 4385fee1dde6d90f42c616a2afc6766824f72835 /benchmarks/time_benchmark.cpp | |
parent | 770d0f6177ca1ad242b509151fb612f07ef8a07b (diff) | |
download | android_bionic-625993dfbb085a3cde7492eda8ec1cdc1ee39a78.tar.gz android_bionic-625993dfbb085a3cde7492eda8ec1cdc1ee39a78.tar.bz2 android_bionic-625993dfbb085a3cde7492eda8ec1cdc1ee39a78.zip |
Use VDSO for clock_gettime(2) and gettimeofday(2).
Bug: 15387103
Change-Id: Ifc3608ea65060c1dc38120b10b6e79874f182a36
Diffstat (limited to 'benchmarks/time_benchmark.cpp')
-rw-r--r-- | benchmarks/time_benchmark.cpp | 50 |
1 files changed, 49 insertions, 1 deletions
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 <sys/syscall.h> #include <time.h> #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); |