forked from abseil/abseil-cpp
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- 07191b0f52301e1e4a790e236f7b7c2fd90561ae Disambiguates computed re…
…turn type of absl::optional logi... by Abseil Team <[email protected]> - acd95f8ec4e6ec1587cb198c7f40af3c81094d92 Release container benchmarks. by Alex Strelnikov <[email protected]> - 80f596b6b7c5e06453e778c16527d5a0e85f8413 Allow absl::base_internal::AtomicHook to have a default v... by Derek Mauro <[email protected]> - 8402631546af8bcbd4acdf897d0cdfb805ad544a Release thread_identity benchmark. by Alex Strelnikov <[email protected]> - 6dcb1e90fefb8556ce4654983d3a73c7585b4b99 Fix spelling error in variant.h by Abseil Team <[email protected]> - faa8a81e1442018c0d400b09a595a5be55074715 Run tests from CMake. The CI is currently Linux only, fo... by Jon Cohen <[email protected]> - 745ed6db574f931f2ec3a88e964fb03a5f22f816 Internal change. by Derek Mauro <[email protected]> - 23facd7d1c5f43ac8181b016ee4acc5955f048c1 absl::variant exception safety test. by Xiaoyi Zhang <[email protected]> - c18e21e7cf8f6e83ae9d90e536e886409dd6cf68 Reinstate the syntax check on time-zone abbreviations now... by Abseil Team <[email protected]> - da469f4314f0c820665a2b5b9477af9462b23e42 Import CCTZ changes to internal copy. by Shaindel Schwartz <[email protected]> - 44ea35843517be03ab256b69449ccfea64352621 Import CCTZ changes to internal copy. by Abseil Team <[email protected]> - 55d1105312687c6093950fac831c7540f49045b5 Import CCTZ changes to internal copy. by Greg Falcon <[email protected]> - 58d7965ad274406410b6d833213eca04d41c6867 Add zoneinfo as a data dependency to the //absl/time tests. by Shaindel Schwartz <[email protected]> - 6acc50146f9ff29015bfaaa5bf9900691f839da5 Change benchmark target type from cc_test to cc_binary. by Alex Strelnikov <[email protected]> - db3fbdae8f9f285a466f7a070326b1ce43b6a0dd Update WORKSPACE for C++ microbenchmarks and release algo... by Alex Strelnikov <[email protected]> - 0869ae168255242af651853ed01719166d8cebf6 Update to Bazel version 0.13.0. by Abseil Team <[email protected]> - e507dd53ab788964207fdf27d31b72a33c296fab Add missing include of cstdio by Abseil Team <[email protected]> GitOrigin-RevId: 07191b0f52301e1e4a790e236f7b7c2fd90561ae Change-Id: I90994cf2b438fbec894724dcd9b90882281eef56
- Loading branch information
Showing
35 changed files
with
1,583 additions
and
119 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
cmake_minimum_required(VERSION 2.8.2) | ||
|
||
project(googletest-download NONE) | ||
|
||
include(ExternalProject) | ||
ExternalProject_Add(googletest | ||
GIT_REPOSITORY https://github.com/google/googletest.git | ||
GIT_TAG master | ||
SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src" | ||
BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build" | ||
CONFIGURE_COMMAND "" | ||
BUILD_COMMAND "" | ||
INSTALL_COMMAND "" | ||
TEST_COMMAND "" | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# Downloads and unpacks googletest at configure time. Based on the instructions | ||
# at https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project | ||
|
||
# Download the latest googletest from Github master | ||
configure_file( | ||
${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt.in | ||
googletest-download/CMakeLists.txt | ||
) | ||
|
||
# Configure and build the downloaded googletest source | ||
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . | ||
RESULT_VARIABLE result | ||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download ) | ||
if(result) | ||
message(FATAL_ERROR "CMake step for googletest failed: ${result}") | ||
endif() | ||
|
||
execute_process(COMMAND ${CMAKE_COMMAND} --build . | ||
RESULT_VARIABLE result | ||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download) | ||
if(result) | ||
message(FATAL_ERROR "Build step for googletest failed: ${result}") | ||
endif() | ||
|
||
# Prevent overriding the parent project's compiler/linker settings on Windows | ||
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) | ||
|
||
# Add googletest directly to our build. This defines the gtest and gtest_main | ||
# targets. | ||
add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src | ||
${CMAKE_BINARY_DIR}/googletest-build | ||
EXCLUDE_FROM_ALL) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
// Copyright 2017 The Abseil Authors. | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
#include <cstdint> | ||
#include <cstring> | ||
|
||
#include "absl/algorithm/algorithm.h" | ||
#include "benchmark/benchmark.h" | ||
|
||
namespace { | ||
|
||
// The range of sequence sizes to benchmark. | ||
constexpr int kMinBenchmarkSize = 1024; | ||
constexpr int kMaxBenchmarkSize = 8 * 1024 * 1024; | ||
|
||
// A user-defined type for use in equality benchmarks. Note that we expect | ||
// std::memcmp to win for this type: libstdc++'s std::equal only defers to | ||
// memcmp for integral types. This is because it is not straightforward to | ||
// guarantee that std::memcmp would produce a result "as-if" compared by | ||
// operator== for other types (example gotchas: NaN floats, structs with | ||
// padding). | ||
struct EightBits { | ||
explicit EightBits(int /* unused */) : data(0) {} | ||
bool operator==(const EightBits& rhs) const { return data == rhs.data; } | ||
uint8_t data; | ||
}; | ||
|
||
template <typename T> | ||
void BM_absl_equal_benchmark(benchmark::State& state) { | ||
std::vector<T> xs(state.range(0), T(0)); | ||
std::vector<T> ys = xs; | ||
while (state.KeepRunning()) { | ||
const bool same = absl::equal(xs.begin(), xs.end(), ys.begin(), ys.end()); | ||
benchmark::DoNotOptimize(same); | ||
} | ||
} | ||
|
||
template <typename T> | ||
void BM_std_equal_benchmark(benchmark::State& state) { | ||
std::vector<T> xs(state.range(0), T(0)); | ||
std::vector<T> ys = xs; | ||
while (state.KeepRunning()) { | ||
const bool same = std::equal(xs.begin(), xs.end(), ys.begin()); | ||
benchmark::DoNotOptimize(same); | ||
} | ||
} | ||
|
||
template <typename T> | ||
void BM_memcmp_benchmark(benchmark::State& state) { | ||
std::vector<T> xs(state.range(0), T(0)); | ||
std::vector<T> ys = xs; | ||
while (state.KeepRunning()) { | ||
const bool same = | ||
std::memcmp(xs.data(), ys.data(), xs.size() * sizeof(T)) == 0; | ||
benchmark::DoNotOptimize(same); | ||
} | ||
} | ||
|
||
// The expectation is that the compiler should be able to elide the equality | ||
// comparison altogether for sufficiently simple types. | ||
template <typename T> | ||
void BM_absl_equal_self_benchmark(benchmark::State& state) { | ||
std::vector<T> xs(state.range(0), T(0)); | ||
while (state.KeepRunning()) { | ||
const bool same = absl::equal(xs.begin(), xs.end(), xs.begin(), xs.end()); | ||
benchmark::DoNotOptimize(same); | ||
} | ||
} | ||
|
||
BENCHMARK_TEMPLATE(BM_absl_equal_benchmark, uint8_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_std_equal_benchmark, uint8_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_memcmp_benchmark, uint8_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_absl_equal_self_benchmark, uint8_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
|
||
BENCHMARK_TEMPLATE(BM_absl_equal_benchmark, uint16_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_std_equal_benchmark, uint16_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_memcmp_benchmark, uint16_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_absl_equal_self_benchmark, uint16_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
|
||
BENCHMARK_TEMPLATE(BM_absl_equal_benchmark, uint32_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_std_equal_benchmark, uint32_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_memcmp_benchmark, uint32_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_absl_equal_self_benchmark, uint32_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
|
||
BENCHMARK_TEMPLATE(BM_absl_equal_benchmark, uint64_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_std_equal_benchmark, uint64_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_memcmp_benchmark, uint64_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_absl_equal_self_benchmark, uint64_t) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
|
||
BENCHMARK_TEMPLATE(BM_absl_equal_benchmark, EightBits) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_std_equal_benchmark, EightBits) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_memcmp_benchmark, EightBits) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
BENCHMARK_TEMPLATE(BM_absl_equal_self_benchmark, EightBits) | ||
->Range(kMinBenchmarkSize, kMaxBenchmarkSize); | ||
|
||
} // namespace | ||
|
||
BENCHMARK_MAIN(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.