From 212e0e38248860b151b28877225629a988d95b58 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Mon, 1 Dec 2014 16:43:51 -0800 Subject: Build our benchmarks against glibc too. Bug: 18556607 Change-Id: I455ac8b93c0835836180e549486bc52d393ee6a6 --- benchmarks/Android.mk | 25 ++++++++++++++++++++++--- benchmarks/benchmark_main.cpp | 1 + benchmarks/pthread_benchmark.cpp | 4 ++-- benchmarks/time_benchmark.cpp | 2 ++ benchmarks/unistd_benchmark.cpp | 4 ++++ 5 files changed, 31 insertions(+), 5 deletions(-) (limited to 'benchmarks') diff --git a/benchmarks/Android.mk b/benchmarks/Android.mk index eb39a85..f163463 100644 --- a/benchmarks/Android.mk +++ b/benchmarks/Android.mk @@ -32,7 +32,6 @@ benchmark_c_flags = \ benchmark_src_files = \ benchmark_main.cpp \ math_benchmark.cpp \ - property_benchmark.cpp \ pthread_benchmark.cpp \ semaphore_benchmark.cpp \ stdio_benchmark.cpp \ @@ -41,7 +40,8 @@ benchmark_src_files = \ unistd_benchmark.cpp \ # Build benchmarks for the device (with bionic's .so). Run with: -# adb shell bionic-benchmarks +# adb shell bionic-benchmarks32 +# adb shell bionic-benchmarks64 include $(CLEAR_VARS) LOCAL_MODULE := bionic-benchmarks LOCAL_MODULE_STEM_32 := bionic-benchmarks32 @@ -49,10 +49,29 @@ LOCAL_MODULE_STEM_64 := bionic-benchmarks64 LOCAL_MULTILIB := both LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_CFLAGS += $(benchmark_c_flags) -LOCAL_SRC_FILES := $(benchmark_src_files) +LOCAL_SRC_FILES := $(benchmark_src_files) property_benchmark.cpp LOCAL_CXX_STL := libc++ include $(BUILD_EXECUTABLE) +# We don't build a static benchmark executable because it's not usually +# useful. If you're trying to run the current benchmarks on an older +# release, it's (so far at least) always because you want to measure the +# performance of the old release's libc, and a static benchmark isn't +# going to let you do that. + +# Build benchmarks for the host (against glibc!). Run with: +include $(CLEAR_VARS) +LOCAL_MODULE := bionic-benchmarks-glibc +LOCAL_MODULE_STEM_32 := bionic-benchmarks-glibc32 +LOCAL_MODULE_STEM_64 := bionic-benchmarks-glibc64 +LOCAL_MULTILIB := both +LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk +LOCAL_CFLAGS += $(benchmark_c_flags) +LOCAL_LDFLAGS += -lrt +LOCAL_SRC_FILES := $(benchmark_src_files) +LOCAL_CXX_STL := libc++ +include $(BUILD_HOST_EXECUTABLE) + ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64)) ifeq ($(TARGET_ARCH),x86) LINKER = linker diff --git a/benchmarks/benchmark_main.cpp b/benchmarks/benchmark_main.cpp index d60670b..815d56b 100644 --- a/benchmarks/benchmark_main.cpp +++ b/benchmarks/benchmark_main.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include diff --git a/benchmarks/pthread_benchmark.cpp b/benchmarks/pthread_benchmark.cpp index 11db56d..92e5998 100644 --- a/benchmarks/pthread_benchmark.cpp +++ b/benchmarks/pthread_benchmark.cpp @@ -80,7 +80,7 @@ BENCHMARK(BM_pthread_mutex_lock); static void BM_pthread_mutex_lock_ERRORCHECK(int iters) { StopBenchmarkTiming(); - pthread_mutex_t mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER; + pthread_mutex_t mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP; StartBenchmarkTiming(); for (int i = 0; i < iters; ++i) { @@ -94,7 +94,7 @@ BENCHMARK(BM_pthread_mutex_lock_ERRORCHECK); static void BM_pthread_mutex_lock_RECURSIVE(int iters) { StopBenchmarkTiming(); - pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; + pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; StartBenchmarkTiming(); for (int i = 0; i < iters; ++i) { diff --git a/benchmarks/time_benchmark.cpp b/benchmarks/time_benchmark.cpp index 22f6e8e..f093ec1 100644 --- a/benchmarks/time_benchmark.cpp +++ b/benchmarks/time_benchmark.cpp @@ -16,7 +16,9 @@ #include "benchmark.h" +#include #include +#include #include static void BM_time_clock_gettime(int iters) { diff --git a/benchmarks/unistd_benchmark.cpp b/benchmarks/unistd_benchmark.cpp index 7e2ac30..94be1dd 100644 --- a/benchmarks/unistd_benchmark.cpp +++ b/benchmarks/unistd_benchmark.cpp @@ -41,6 +41,8 @@ static void BM_unistd_getpid_syscall(int iters) { } BENCHMARK(BM_unistd_getpid_syscall); +#if defined(__BIONIC__) + // Stop GCC optimizing out our pure function. /* Must not be static! */ pid_t (*gettid_fp)() = gettid; @@ -55,6 +57,8 @@ static void BM_unistd_gettid(int iters) { } BENCHMARK(BM_unistd_gettid); +#endif + static void BM_unistd_gettid_syscall(int iters) { StartBenchmarkTiming(); -- cgit v1.1