diff options
author | Eric Fiselier <eric@efcs.ca> | 2016-08-09 18:56:48 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2016-08-09 18:56:48 +0000 |
commit | f6e09e537bab92bac0c0f9cfaa4f79761356bf7e (patch) | |
tree | 5121bd831aec661aec64f853d924c125e4e9bcfb /libcxx/benchmarks | |
parent | 982ab5dbd815431f9f21b1b56bf7f0f1c2567842 (diff) | |
download | bcm5719-llvm-f6e09e537bab92bac0c0f9cfaa4f79761356bf7e.tar.gz bcm5719-llvm-f6e09e537bab92bac0c0f9cfaa4f79761356bf7e.zip |
Update in-tree Google Benchmark to current ToT.
I've put some work into the Google Benchmark library in order to make it easier
to benchmark libc++. These changes have already been upstreamed into
Google Benchmark and this patch applies the changes to the in-tree version.
The main improvement in the addition of a 'compare_bench.py' script which
makes it very easy to compare benchmarks. For example to compare the native
STL to libc++ you would run:
`$ compare_bench.py ./util_smartptr.native.out ./util_smartptr.libcxx.out`
And the output would look like:
RUNNING: ./util_smartptr.native.out
Benchmark Time CPU Iterations
----------------------------------------------------------------
BM_SharedPtrCreateDestroy 62 ns 62 ns 10937500
BM_SharedPtrIncDecRef 31 ns 31 ns 23972603
BM_WeakPtrIncDecRef 28 ns 28 ns 23648649
RUNNING: ./util_smartptr.libcxx.out
Benchmark Time CPU Iterations
----------------------------------------------------------------
BM_SharedPtrCreateDestroy 46 ns 46 ns 14957265
BM_SharedPtrIncDecRef 31 ns 31 ns 22435897
BM_WeakPtrIncDecRef 34 ns 34 ns 21084337
Comparing ./util_smartptr.native.out to ./util_smartptr.libcxx.out
Benchmark Time CPU
-----------------------------------------------------
BM_SharedPtrCreateDestroy -0.26 -0.26
BM_SharedPtrIncDecRef +0.00 +0.00
BM_WeakPtrIncDecRef +0.21 +0.21
llvm-svn: 278147
Diffstat (limited to 'libcxx/benchmarks')
-rw-r--r-- | libcxx/benchmarks/CMakeLists.txt | 7 | ||||
-rw-r--r-- | libcxx/benchmarks/ContainerBenchmarks.hpp | 14 | ||||
-rw-r--r-- | libcxx/benchmarks/algorithms.bench.cpp | 2 | ||||
-rw-r--r-- | libcxx/benchmarks/unordered_set_operations.bench.cpp | 2 |
4 files changed, 15 insertions, 10 deletions
diff --git a/libcxx/benchmarks/CMakeLists.txt b/libcxx/benchmarks/CMakeLists.txt index 1adbf6f96e2..a1bc362963a 100644 --- a/libcxx/benchmarks/CMakeLists.txt +++ b/libcxx/benchmarks/CMakeLists.txt @@ -87,7 +87,12 @@ macro(add_benchmark_test name source_file) add_executable(${libcxx_target} EXCLUDE_FROM_ALL ${source_file}) add_dependencies(${libcxx_target} cxx google-benchmark-libcxx) add_dependencies(libcxx-benchmarks ${libcxx_target}) - target_link_libraries(${libcxx_target} cxx -lbenchmark) + if (LIBCXX_ENABLE_SHARED) + target_link_libraries(${libcxx_target} cxx_shared) + else() + target_link_libraries(${libcxx_target} cxx_static) + endif() + target_link_libraries(${libcxx_target} -lbenchmark) set_target_properties(${libcxx_target} PROPERTIES OUTPUT_NAME "${name}.libcxx.out" diff --git a/libcxx/benchmarks/ContainerBenchmarks.hpp b/libcxx/benchmarks/ContainerBenchmarks.hpp index 6350e6b013c..973a135f70d 100644 --- a/libcxx/benchmarks/ContainerBenchmarks.hpp +++ b/libcxx/benchmarks/ContainerBenchmarks.hpp @@ -10,7 +10,7 @@ namespace ContainerBenchmarks { template <class Container, class GenInputs> void BM_ConstructIterIter(benchmark::State& st, Container, GenInputs gen) { - auto in = gen(st.range_x()); + auto in = gen(st.range(0)); const auto end = in.end(); benchmark::DoNotOptimize(&in); while (st.KeepRunning()) { @@ -21,7 +21,7 @@ void BM_ConstructIterIter(benchmark::State& st, Container, GenInputs gen) { template <class Container, class GenInputs> void BM_InsertValue(benchmark::State& st, Container c, GenInputs gen) { - auto in = gen(st.range_x()); + auto in = gen(st.range(0)); const auto end = in.end(); while (st.KeepRunning()) { c.clear(); @@ -34,7 +34,7 @@ void BM_InsertValue(benchmark::State& st, Container c, GenInputs gen) { template <class Container, class GenInputs> void BM_InsertValueRehash(benchmark::State& st, Container c, GenInputs gen) { - auto in = gen(st.range_x()); + auto in = gen(st.range(0)); const auto end = in.end(); while (st.KeepRunning()) { c.clear(); @@ -49,7 +49,7 @@ void BM_InsertValueRehash(benchmark::State& st, Container c, GenInputs gen) { template <class Container, class GenInputs> void BM_InsertDuplicate(benchmark::State& st, Container c, GenInputs gen) { - auto in = gen(st.range_x()); + auto in = gen(st.range(0)); const auto end = in.end(); c.insert(in.begin(), in.end()); benchmark::DoNotOptimize(&c); @@ -65,7 +65,7 @@ void BM_InsertDuplicate(benchmark::State& st, Container c, GenInputs gen) { template <class Container, class GenInputs> void BM_EmplaceDuplicate(benchmark::State& st, Container c, GenInputs gen) { - auto in = gen(st.range_x()); + auto in = gen(st.range(0)); const auto end = in.end(); c.insert(in.begin(), in.end()); benchmark::DoNotOptimize(&c); @@ -80,7 +80,7 @@ void BM_EmplaceDuplicate(benchmark::State& st, Container c, GenInputs gen) { template <class Container, class GenInputs> static void BM_Find(benchmark::State& st, Container c, GenInputs gen) { - auto in = gen(st.range_x()); + auto in = gen(st.range(0)); c.insert(in.begin(), in.end()); benchmark::DoNotOptimize(&(*c.begin())); const auto end = in.data() + in.size(); @@ -95,7 +95,7 @@ static void BM_Find(benchmark::State& st, Container c, GenInputs gen) { template <class Container, class GenInputs> static void BM_FindRehash(benchmark::State& st, Container c, GenInputs gen) { c.rehash(8); - auto in = gen(st.range_x()); + auto in = gen(st.range(0)); c.insert(in.begin(), in.end()); benchmark::DoNotOptimize(&(*c.begin())); const auto end = in.data() + in.size(); diff --git a/libcxx/benchmarks/algorithms.bench.cpp b/libcxx/benchmarks/algorithms.bench.cpp index 82ed99223ce..745cc172718 100644 --- a/libcxx/benchmarks/algorithms.bench.cpp +++ b/libcxx/benchmarks/algorithms.bench.cpp @@ -10,7 +10,7 @@ constexpr std::size_t TestNumInputs = 1024; template <class GenInputs> void BM_Sort(benchmark::State& st, GenInputs gen) { using ValueType = typename decltype(gen(0))::value_type; - const auto in = gen(st.range_x()); + const auto in = gen(st.range(0)); std::vector<ValueType> inputs[5]; auto reset_inputs = [&]() { for (auto& C : inputs) { diff --git a/libcxx/benchmarks/unordered_set_operations.bench.cpp b/libcxx/benchmarks/unordered_set_operations.bench.cpp index 8c4463865d5..e2afdde56dc 100644 --- a/libcxx/benchmarks/unordered_set_operations.bench.cpp +++ b/libcxx/benchmarks/unordered_set_operations.bench.cpp @@ -109,7 +109,7 @@ struct UInt64Hash2 { template <class HashFn, class GenInputs> void BM_Hash(benchmark::State& st, HashFn fn, GenInputs gen) { - auto in = gen(st.range_x()); + auto in = gen(st.range(0)); const auto end = in.data() + in.size(); std::size_t last_hash = 0; benchmark::DoNotOptimize(&last_hash); |