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 | |
parent | 770d0f6177ca1ad242b509151fb612f07ef8a07b (diff) | |
download | bionic-625993dfbb085a3cde7492eda8ec1cdc1ee39a78.zip bionic-625993dfbb085a3cde7492eda8ec1cdc1ee39a78.tar.gz bionic-625993dfbb085a3cde7492eda8ec1cdc1ee39a78.tar.bz2 |
Use VDSO for clock_gettime(2) and gettimeofday(2).
Bug: 15387103
Change-Id: Ifc3608ea65060c1dc38120b10b6e79874f182a36
Diffstat (limited to 'benchmarks')
-rw-r--r-- | benchmarks/Android.mk | 2 | ||||
-rw-r--r-- | benchmarks/time_benchmark.cpp | 50 |
2 files changed, 50 insertions, 2 deletions
diff --git a/benchmarks/Android.mk b/benchmarks/Android.mk index f9722ae..4d7ad96 100644 --- a/benchmarks/Android.mk +++ b/benchmarks/Android.mk @@ -54,7 +54,7 @@ LOCAL_SHARED_LIBRARIES += libstlport LOCAL_SRC_FILES := $(benchmark_src_files) include $(BUILD_EXECUTABLE) -ifeq ($(HOST_OS)-$(HOST_ARCH),linux-x86) +ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64)) ifeq ($(TARGET_ARCH),x86) LINKER = linker NATIVE_SUFFIX=32 diff --git a/benchmarks/time_benchmark.cpp b/benchmarks/time_benchmark.cpp index 3bf8c07..0a146ae 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); |