summaryrefslogtreecommitdiffstats
path: root/benchmarks
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks')
-rw-r--r--benchmarks/Android.mk2
-rw-r--r--benchmarks/time_benchmark.cpp50
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);