diff options
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); |