http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/query_execution/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/query_execution/CMakeLists.txt b/query_execution/CMakeLists.txt index c4c4079..e26bde0 100644 --- a/query_execution/CMakeLists.txt +++ b/query_execution/CMakeLists.txt @@ -21,11 +21,7 @@ QS_PROTOBUF_GENERATE_CPP(queryexecution_QueryExecutionMessages_proto_srcs queryexecution_QueryExecutionMessages_proto_hdrs QueryExecutionMessages.proto) -if (BUILD_SHARED_LIBS) - set(GFLAGS_LIB_NAME gflags_nothreads-shared) -else() - set(GFLAGS_LIB_NAME gflags_nothreads-static) -endif() +set_gflags_lib_name () # Declare micro-libs: add_library(quickstep_queryexecution_AdmitRequestMessage ../empty_src.cpp AdmitRequestMessage.hpp)
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/query_optimizer/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/query_optimizer/CMakeLists.txt b/query_optimizer/CMakeLists.txt index 1a15271..b6c794d 100644 --- a/query_optimizer/CMakeLists.txt +++ b/query_optimizer/CMakeLists.txt @@ -24,11 +24,7 @@ configure_file ( "${CMAKE_CURRENT_BINARY_DIR}/QueryOptimizerConfig.h" ) -if (BUILD_SHARED_LIBS) - set(GFLAGS_LIB_NAME gflags_nothreads-shared) -else() - set(GFLAGS_LIB_NAME gflags_nothreads-static) -endif() +set_gflags_lib_name () add_subdirectory(cost_model) add_subdirectory(expressions) http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/query_optimizer/tests/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/query_optimizer/tests/CMakeLists.txt b/query_optimizer/tests/CMakeLists.txt index b987322..5ef1d0a 100644 --- a/query_optimizer/tests/CMakeLists.txt +++ b/query_optimizer/tests/CMakeLists.txt @@ -20,11 +20,7 @@ add_subdirectory(logical_generator) add_subdirectory(physical_generator) add_subdirectory(resolver) -if (BUILD_SHARED_LIBS) - set(GFLAGS_LIB_NAME gflags_nothreads-shared) -else() - set(GFLAGS_LIB_NAME gflags_nothreads-static) -endif() +set_gflags_lib_name () add_library(quickstep_queryoptimizer_tests_OptimizerTest OptimizerTest.cpp OptimizerTest.hpp) add_library(quickstep_queryoptimizer_tests_TestDatabaseLoader TestDatabaseLoader.cpp TestDatabaseLoader.hpp) http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/relational_operators/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/relational_operators/CMakeLists.txt b/relational_operators/CMakeLists.txt index 78da7b8..c2db4ec 100644 --- a/relational_operators/CMakeLists.txt +++ b/relational_operators/CMakeLists.txt @@ -29,11 +29,7 @@ QS_PROTOBUF_GENERATE_CPP(relationaloperators_WorkOrder_proto_srcs relationaloperators_WorkOrder_proto_hdrs WorkOrder.proto) -if (BUILD_SHARED_LIBS) - set(GFLAGS_LIB_NAME gflags_nothreads-shared) -else() - set(GFLAGS_LIB_NAME gflags_nothreads-static) -endif() +set_gflags_lib_name () # Declare micro-libs: add_library(quickstep_relationaloperators_AggregationOperator AggregationOperator.cpp AggregationOperator.hpp) http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/storage/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/storage/CMakeLists.txt b/storage/CMakeLists.txt index 534630a..fddea1f 100644 --- a/storage/CMakeLists.txt +++ b/storage/CMakeLists.txt @@ -21,11 +21,7 @@ if (REBUILD_INDEX_ON_UPDATE_OVERFLOW) set(QUICKSTEP_REBUILD_INDEX_ON_UPDATE_OVERFLOW TRUE) endif() -if (BUILD_SHARED_LIBS) - set(GFLAGS_LIB_NAME gflags_nothreads-shared) -else() - set(GFLAGS_LIB_NAME gflags_nothreads-static) -endif() +set_gflags_lib_name () include(CheckIncludeFileCXX) check_include_files("fcntl.h;glob.h;unistd.h;sys/stat.h;sys/types.h" QUICKSTEP_HAVE_FILE_MANAGER_POSIX) http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/.gitignore ---------------------------------------------------------------------- diff --git a/third_party/benchmark/.gitignore b/third_party/benchmark/.gitignore deleted file mode 100644 index ac46434..0000000 --- a/third_party/benchmark/.gitignore +++ /dev/null @@ -1,39 +0,0 @@ -*.a -*.so -*.so.?* -*.dylib -*.cmake -!/cmake/*.cmake -*~ - -# cmake files. -/Testing -CMakeCache.txt -CMakeFiles/ -cmake_install.cmake - -# makefiles. -Makefile - -# in-source build. -bin/ -lib/ -/test/benchmark_test -/test/re_test - -# exuberant ctags. -tags - -# YouCompleteMe configuration. -.ycm_extra_conf.pyc - -# ninja generated files. -.ninja_deps -.ninja_log -build.ninja -install_manifest.txt -rules.ninja - -# out-of-source build top-level folders. -build/ -_build/ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/.travis.yml ---------------------------------------------------------------------- diff --git a/third_party/benchmark/.travis.yml b/third_party/benchmark/.travis.yml deleted file mode 100644 index c7c53cc..0000000 --- a/third_party/benchmark/.travis.yml +++ /dev/null @@ -1,33 +0,0 @@ -matrix: - include: - - os: linux - env: BUILD_TYPE=Debug STD=c++0x - - os: linux - env: BUILD_TYPE=Debug STD=c++11 - - os: linux - env: BUILD_TYPE=Release STD=c++0x - - os: linux - env: BUILD_TYPE=Release STD=c++11 - - os: osx - env: BUILD_TYPE=Debug STD=c++11 - - os: osx - env: BUILD_TYPE=Release STD=c++11 - -language: - - cpp - -before_install: - - if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$STD" = "c++11" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; fi - - if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$STD" = "c++11" ]; then sudo apt-get update -qq; fi - -install: - - if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$STD" = "c++11" ]; then sudo apt-get install -qq gcc-4.8 g++-4.8; fi - - if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$STD" = "c++11" ]; then sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 90; fi - -before_script: - - mkdir build && cd build - -script: - - cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_CXX_FLAGS="-std=${STD}" - - make - - make CTEST_OUTPUT_ON_FAILURE=1 test http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/AUTHORS ---------------------------------------------------------------------- diff --git a/third_party/benchmark/AUTHORS b/third_party/benchmark/AUTHORS deleted file mode 100644 index 561c67b..0000000 --- a/third_party/benchmark/AUTHORS +++ /dev/null @@ -1,25 +0,0 @@ -# This is the official list of benchmark authors for copyright purposes. -# This file is distinct from the CONTRIBUTORS files. -# See the latter for an explanation. -# -# Names should be added to this file as: -# Name or Organization <email address> -# The email address is not required for organizations. -# -# Please keep the list sorted. - -Arne Beer <a...@twobeer.de> -Christopher Seymour <chris.j.seym...@hotmail.com> -David Coeurjolly <david.coeurjo...@liris.cnrs.fr> -Dominic Hamon <d...@stripysock.com> -Eugene Zhuk <eugene.z...@gmail.com> -Evgeny Safronov <division...@gmail.com> -Felix Homann <linuxau...@showlabor.de> -Google Inc. -JianXiong Zhou <zhoujianxio...@gmail.com> -Lei Xu <edd...@gmail.com> -Matt Clarkson <mattyclark...@gmail.com> -Oleksandr Sochka <sasha.soc...@gmail.com> -Paul Redmond <paul.redm...@gmail.com> -Shuo Chen <chens...@chenshuo.com> -Yusuke Suzuki <utatane....@gmail.com> http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/third_party/benchmark/CMakeLists.txt b/third_party/benchmark/CMakeLists.txt deleted file mode 100644 index 2f050a4..0000000 --- a/third_party/benchmark/CMakeLists.txt +++ /dev/null @@ -1,62 +0,0 @@ -cmake_minimum_required (VERSION 2.8) -project (benchmark) - -option(BENCHMARK_ENABLE_SHARED "Enable building a shared library." OFF) -option(BENCHMARK_ENABLE_TESTING "Enable testing of the benchmark library." OFF) -# Make sure we can import out CMake functions -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") - -# Read the git tags to determine the project version -include(GetGitVersion) -get_git_version(GIT_VERSION) - -# Tell the user what versions we are using -string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" VERSION ${GIT_VERSION}) -message("-- Version: ${VERSION}") - -# The version of the libraries -set(GENERIC_LIB_VERSION ${VERSION}) -string(SUBSTRING ${VERSION} 0 1 GENERIC_LIB_SOVERSION) - -# Try and enable C++11. Don't use C++14 because it doesn't work in some -# configurations. -include(CheckCXXCompilerFlag) -include(AddCXXCompilerFlag) -include(CXXFeatureCheck) - -check_cxx_compiler_flag(-std=c++11 HAVE_FLAG_CXX_11) -check_cxx_compiler_flag(-std=c++0x HAVE_FLAG_CXX_0X) -if (HAVE_FLAG_CXX_11) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -elseif (HAVE_FLAG_CXX_0X) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") -endif() - -# Turn compiler warnings up to 11 -add_cxx_compiler_flag(-Wall) -add_cxx_compiler_flag(-Wextra) -add_cxx_compiler_flag(-Wshadow) -add_cxx_compiler_flag(-Werror) -add_cxx_compiler_flag(-pedantic-errors) -# TODO(ericwf): enable this for g++ -#add_cxx_compiler_flag(-Wzero-as-null-pointer-constant) -# Release flags -add_cxx_compiler_flag(-fno-strict-aliasing RELEASE) - -add_cxx_compiler_flag(-Wthread-safety) - -# C++ feature checks -cxx_feature_check(STD_REGEX) -cxx_feature_check(GNU_POSIX_REGEX) -cxx_feature_check(POSIX_REGEX) - -# Set up directories -include_directories(${PROJECT_SOURCE_DIR}/include) - -# Build the targets -add_subdirectory(src) - -if (BENCHMARK_ENABLE_TESTING) - enable_testing() - add_subdirectory(test) -endif() http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/CONTRIBUTING.md ---------------------------------------------------------------------- diff --git a/third_party/benchmark/CONTRIBUTING.md b/third_party/benchmark/CONTRIBUTING.md deleted file mode 100644 index 43de4c9..0000000 --- a/third_party/benchmark/CONTRIBUTING.md +++ /dev/null @@ -1,58 +0,0 @@ -# How to contribute # - -We'd love to accept your patches and contributions to this project. There are -a just a few small guidelines you need to follow. - - -## Contributor License Agreement ## - -Contributions to any Google project must be accompanied by a Contributor -License Agreement. This is not a copyright **assignment**, it simply gives -Google permission to use and redistribute your contributions as part of the -project. - - * If you are an individual writing original source code and you're sure you - own the intellectual property, then you'll need to sign an [individual - CLA][]. - - * If you work for a company that wants to allow you to contribute your work, - then you'll need to sign a [corporate CLA][]. - -You generally only need to submit a CLA once, so if you've already submitted -one (even if it was for a different project), you probably don't need to do it -again. - -[individual CLA]: https://developers.google.com/open-source/cla/individual -[corporate CLA]: https://developers.google.com/open-source/cla/corporate - -Once your CLA is submitted (or if you already submitted one for -another Google project), make a commit adding yourself to the -[AUTHORS][] and [CONTRIBUTORS][] files. This commit can be part -of your first [pull request][]. - -[AUTHORS]: AUTHORS -[CONTRIBUTORS]: CONTRIBUTORS - - -## Submitting a patch ## - - 1. It's generally best to start by opening a new issue describing the bug or - feature you're intending to fix. Even if you think it's relatively minor, - it's helpful to know what people are working on. Mention in the initial - issue that you are planning to work on that bug or feature so that it can - be assigned to you. - - 1. Follow the normal process of [forking][] the project, and setup a new - branch to work in. It's important that each group of changes be done in - separate branches in order to ensure that a pull request only includes the - commits related to that bug or feature. - - 1. Do your best to have [well-formed commit messages][] for each change. - This provides consistency throughout the project, and ensures that commit - messages are able to be formatted properly by various git tools. - - 1. Finally, push the commits to your fork and submit a [pull request][]. - -[forking]: https://help.github.com/articles/fork-a-repo -[well-formed commit messages]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html -[pull request]: https://help.github.com/articles/creating-a-pull-request http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/CONTRIBUTORS ---------------------------------------------------------------------- diff --git a/third_party/benchmark/CONTRIBUTORS b/third_party/benchmark/CONTRIBUTORS deleted file mode 100644 index 5616976..0000000 --- a/third_party/benchmark/CONTRIBUTORS +++ /dev/null @@ -1,41 +0,0 @@ -# People who have agreed to one of the CLAs and can contribute patches. -# The AUTHORS file lists the copyright holders; this file -# lists people. For example, Google employees are listed here -# but not in AUTHORS, because Google holds the copyright. -# -# Names should be added to this file only after verifying that -# the individual or the individual's organization has agreed to -# the appropriate Contributor License Agreement, found here: -# -# https://developers.google.com/open-source/cla/individual -# https://developers.google.com/open-source/cla/corporate -# -# The agreement for individuals can be filled out on the web. -# -# When adding J Random Contributor's name to this file, -# either J's name or J's organization's name should be -# added to the AUTHORS file, depending on whether the -# individual or corporate CLA was used. -# -# Names should be added to this file as: -# Name <email address> -# -# Please keep the list sorted. - -Arne Beer <a...@twobeer.de> -Chris Kennelly <ckenne...@google.com> <ckenne...@ckennelly.com> -Christopher Seymour <chris.j.seym...@hotmail.com> -David Coeurjolly <david.coeurjo...@liris.cnrs.fr> -Dominic Hamon <d...@stripysock.com> -Eugene Zhuk <eugene.z...@gmail.com> -Evgeny Safronov <division...@gmail.com> -Felix Homann <linuxau...@showlabor.de> -JianXiong Zhou <zhoujianxio...@gmail.com> -Lei Xu <edd...@gmail.com> -Matt Clarkson <mattyclark...@gmail.com> -Oleksandr Sochka <sasha.soc...@gmail.com> -Pascal Leroy <p...@google.com> -Paul Redmond <paul.redm...@gmail.com> -Pierre Phaneuf <pphan...@google.com> -Shuo Chen <chens...@chenshuo.com> -Yusuke Suzuki <utatane....@gmail.com> http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/LICENSE ---------------------------------------------------------------------- diff --git a/third_party/benchmark/LICENSE b/third_party/benchmark/LICENSE deleted file mode 100644 index d645695..0000000 --- a/third_party/benchmark/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/README.md ---------------------------------------------------------------------- diff --git a/third_party/benchmark/README.md b/third_party/benchmark/README.md deleted file mode 100644 index 30f48b3..0000000 --- a/third_party/benchmark/README.md +++ /dev/null @@ -1,165 +0,0 @@ -benchmark -========= -[](https://travis-ci.org/google/benchmark) - -A library to support the benchmarking of functions, similar to unit-tests. - -Discussion group: https://groups.google.com/d/forum/benchmark-discuss - -Example usage -------------- -Define a function that executes the code to be measured a -specified number of times: - -```c++ -static void BM_StringCreation(benchmark::State& state) { - while (state.KeepRunning()) - std::string empty_string; -} -// Register the function as a benchmark -BENCHMARK(BM_StringCreation); - -// Define another benchmark -static void BM_StringCopy(benchmark::State& state) { - std::string x = "hello"; - while (state.KeepRunning()) - std::string copy(x); -} -BENCHMARK(BM_StringCopy); - -// Augment the main() program to invoke benchmarks if specified -// via the --benchmarks command line flag. E.g., -// my_unittest --benchmark_filter=all -// my_unittest --benchmark_filter=BM_StringCreation -// my_unittest --benchmark_filter=String -// my_unittest --benchmark_filter='Copy|Creation' -int main(int argc, const char* argv[]) { - benchmark::Initialize(&argc, argv); - benchmark::RunSpecifiedBenchmarks(); - return 0; -} -``` - -Sometimes a family of microbenchmarks can be implemented with -just one routine that takes an extra argument to specify which -one of the family of benchmarks to run. For example, the following -code defines a family of microbenchmarks for measuring the speed -of `memcpy()` calls of different lengths: - -```c++ -static void BM_memcpy(benchmark::State& state) { - char* src = new char[state.range_x()]; char* dst = new char[state.range_x()]; - memset(src, 'x', state.range_x()); - while (state.KeepRunning()) - memcpy(dst, src, state.range_x()); - state.SetBytesProcessed(int64_t(state.iterations) * int64_t(state.range_x())); - delete[] src; - delete[] dst; -} -BENCHMARK(BM_memcpy)->Arg(8)->Arg(64)->Arg(512)->Arg(1<<10)->Arg(8<<10); -``` - -The preceding code is quite repetitive, and can be replaced with the -following short-hand. The following invocation will pick a few -appropriate arguments in the specified range and will generate a -microbenchmark for each such argument. - -```c++ -BENCHMARK(BM_memcpy)->Range(8, 8<<10); -``` - -You might have a microbenchmark that depends on two inputs. For -example, the following code defines a family of microbenchmarks for -measuring the speed of set insertion. - -```c++ -static void BM_SetInsert(benchmark::State& state) { - while (state.KeepRunning()) { - state.PauseTiming(); - std::set<int> data = ConstructRandomSet(state.range_x()); - state.ResumeTiming(); - for (int j = 0; j < state.rangeY; ++j) - data.insert(RandomNumber()); - } -} -BENCHMARK(BM_SetInsert) - ->ArgPair(1<<10, 1) - ->ArgPair(1<<10, 8) - ->ArgPair(1<<10, 64) - ->ArgPair(1<<10, 512) - ->ArgPair(8<<10, 1) - ->ArgPair(8<<10, 8) - ->ArgPair(8<<10, 64) - ->ArgPair(8<<10, 512); -``` - -The preceding code is quite repetitive, and can be replaced with -the following short-hand. The following macro will pick a few -appropriate arguments in the product of the two specified ranges -and will generate a microbenchmark for each such pair. - -```c++ -BENCHMARK(BM_SetInsert)->RangePair(1<<10, 8<<10, 1, 512); -``` - -For more complex patterns of inputs, passing a custom function -to Apply allows programmatic specification of an -arbitrary set of arguments to run the microbenchmark on. -The following example enumerates a dense range on one parameter, -and a sparse range on the second. - -```c++ -static benchmark::internal::Benchmark* CustomArguments( - benchmark::internal::Benchmark* b) { - for (int i = 0; i <= 10; ++i) - for (int j = 32; j <= 1024*1024; j *= 8) - b = b->ArgPair(i, j); - return b; -} -BENCHMARK(BM_SetInsert)->Apply(CustomArguments); -``` - -Templated microbenchmarks work the same way: -Produce then consume 'size' messages 'iters' times -Measures throughput in the absence of multiprogramming. - -```c++ -template <class Q> int BM_Sequential(benchmark::State& state) { - Q q; - typename Q::value_type v; - while (state.KeepRunning()) { - for (int i = state.range_x(); i--; ) - q.push(v); - for (int e = state.range_x(); e--; ) - q.Wait(&v); - } - // actually messages, not bytes: - state.SetBytesProcessed( - static_cast<int64_t>(state.iterations())*state.range_x()); -} -BENCHMARK_TEMPLATE(BM_Sequential, WaitQueue<int>)->Range(1<<0, 1<<10); -``` - -In a multithreaded test, it is guaranteed that none of the threads will start -until all have called KeepRunning, and all will have finished before KeepRunning -returns false. As such, any global setup or teardown you want to do can be -wrapped in a check against the thread index: - -```c++ -static void BM_MultiThreaded(benchmark::State& state) { - if (state.thread_index == 0) { - // Setup code here. - } - while (state.KeepRunning()) { - // Run the test as normal. - } - if (state.thread_index == 0) { - // Teardown code here. - } -} -BENCHMARK(BM_MultiThreaded)->Threads(2); -``` - -Linking against the library ---------------------------- -When using gcc, it is necessary to link against pthread to avoid runtime exceptions. This is due to how gcc implements std::thread. See [issue #67](https://github.com/google/benchmark/issues/67) for more details. http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/cmake/AddCXXCompilerFlag.cmake ---------------------------------------------------------------------- diff --git a/third_party/benchmark/cmake/AddCXXCompilerFlag.cmake b/third_party/benchmark/cmake/AddCXXCompilerFlag.cmake deleted file mode 100644 index 7c0f5a3..0000000 --- a/third_party/benchmark/cmake/AddCXXCompilerFlag.cmake +++ /dev/null @@ -1,38 +0,0 @@ -# - Adds a compiler flag if it is supported by the compiler -# -# This function checks that the supplied compiler flag is supported and then -# adds it to the corresponding compiler flags -# -# add_cxx_compiler_flag(<FLAG> [<VARIANT>]) -# -# - Example -# -# include(AddCXXCompilerFlag) -# add_cxx_compiler_flag(-Wall) -# add_cxx_compiler_flag(-no-strict-aliasing RELEASE) -# Requires CMake 2.6+ - -if(__add_cxx_compiler_flag) - return() -endif() -set(__add_cxx_compiler_flag INCLUDED) - -include(CheckCXXCompilerFlag) - -function(add_cxx_compiler_flag FLAG) - if(ARGV1) - set(VARIANT ${ARGV1}) - string(TOLOWER ${VARIANT} VARIANT) - set(VARIANT " ${VARIANT}") - endif() - string(TOUPPER "HAVE_${FLAG}" SANITIZED_FLAG) - string(REGEX REPLACE "[^A-Za-z_0-9]" "_" SANITIZED_FLAG ${SANITIZED_FLAG}) - string(REGEX REPLACE "_+" "_" SANITIZED_FLAG ${SANITIZED_FLAG}) - check_cxx_compiler_flag(${FLAG} ${SANITIZED_FLAG}) - if(${SANITIZED_FLAG}) - string(REGEX REPLACE "[^A-Za-z_0-9]" "_" VARIANT "${VARIANT}") - string(TOUPPER "${VARIANT}" VARIANT) - set(CMAKE_CXX_FLAGS${VARIANT} "${CMAKE_CXX_FLAGS${VARIANT}} ${FLAG}" PARENT_SCOPE) - endif() -endfunction() - http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/cmake/CXXFeatureCheck.cmake ---------------------------------------------------------------------- diff --git a/third_party/benchmark/cmake/CXXFeatureCheck.cmake b/third_party/benchmark/cmake/CXXFeatureCheck.cmake deleted file mode 100644 index 23ee8ac..0000000 --- a/third_party/benchmark/cmake/CXXFeatureCheck.cmake +++ /dev/null @@ -1,39 +0,0 @@ -# - Compile and run code to check for C++ features -# -# This functions compiles a source file under the `cmake` folder -# and adds the corresponding `HAVE_[FILENAME]` flag to the CMake -# environment -# -# cxx_feature_check(<FLAG> [<VARIANT>]) -# -# - Example -# -# include(CXXFeatureCheck) -# cxx_feature_check(STD_REGEX) -# Requires CMake 2.6+ - -if(__cxx_feature_check) - return() -endif() -set(__cxx_feature_check INCLUDED) - -function(cxx_feature_check FILE) - string(TOLOWER ${FILE} FILE) - string(TOUPPER ${FILE} VAR) - string(TOUPPER "HAVE_${VAR}" FEATURE) - message("-- Performing Test ${FEATURE}") - try_run(RUN_${FEATURE} COMPILE_${FEATURE} - ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${FILE}.cpp) - if(RUN_${FEATURE} EQUAL 0) - message("-- Performing Test ${FEATURE} -- success") - set(HAVE_${VAR} 1 PARENT_SCOPE) - add_definitions(-DHAVE_${VAR}) - else() - if(NOT COMPILE_${FEATURE}) - message("-- Performing Test ${FEATURE} -- failed to compile") - else() - message("-- Performing Test ${FEATURE} -- compiled but failed to run") - endif() - endif() -endfunction() - http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/cmake/GetGitVersion.cmake ---------------------------------------------------------------------- diff --git a/third_party/benchmark/cmake/GetGitVersion.cmake b/third_party/benchmark/cmake/GetGitVersion.cmake deleted file mode 100644 index e017fa3..0000000 --- a/third_party/benchmark/cmake/GetGitVersion.cmake +++ /dev/null @@ -1,45 +0,0 @@ -# - Returns a version string from Git tags -# -# This function inspects the annotated git tags for the project and returns a string -# into a CMake variable -# -# get_git_version(<var>) -# -# - Example -# -# include(GetGitVersion) -# get_git_version(GIT_VERSION) -# -# Requires CMake 2.6+ - -if(__get_git_version) - return() -endif() -set(__get_git_version INCLUDED) - -function(get_git_version var) - execute_process(COMMAND git describe --match "v[0-9]*.[0-9]*.[0-9]*" --abbrev=8 - RESULT_VARIABLE status - OUTPUT_VARIABLE GIT_VERSION - ERROR_QUIET) - if(${status}) - set(GIT_VERSION "v0.0.0") - else() - string(STRIP ${GIT_VERSION} GIT_VERSION) - string(REGEX REPLACE "-[0-9]+-g" "-" GIT_VERSION ${GIT_VERSION}) - endif() - - # Work out if the repository is dirty - execute_process(COMMAND git update-index -q --refresh - OUTPUT_QUIET - ERROR_QUIET) - execute_process(COMMAND git diff-index --name-only HEAD -- - OUTPUT_VARIABLE GIT_DIFF_INDEX - ERROR_QUIET) - string(COMPARE NOTEQUAL "${GIT_DIFF_INDEX}" "" GIT_DIRTY) - if (${GIT_DIRTY}) - set(GIT_VERSION "${GIT_VERSION}-dirty") - endif() - message("-- git Version: ${GIT_VERSION}") - set(${var} ${GIT_VERSION} PARENT_SCOPE) -endfunction() http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/cmake/gnu_posix_regex.cpp ---------------------------------------------------------------------- diff --git a/third_party/benchmark/cmake/gnu_posix_regex.cpp b/third_party/benchmark/cmake/gnu_posix_regex.cpp deleted file mode 100644 index b5b91cd..0000000 --- a/third_party/benchmark/cmake/gnu_posix_regex.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include <gnuregex.h> -#include <string> -int main() { - std::string str = "test0159"; - regex_t re; - int ec = regcomp(&re, "^[a-z]+[0-9]+$", REG_EXTENDED | REG_NOSUB); - if (ec != 0) { - return ec; - } - return regexec(&re, str.c_str(), 0, nullptr, 0) ? -1 : 0; -} - http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/cmake/posix_regex.cpp ---------------------------------------------------------------------- diff --git a/third_party/benchmark/cmake/posix_regex.cpp b/third_party/benchmark/cmake/posix_regex.cpp deleted file mode 100644 index a31af80..0000000 --- a/third_party/benchmark/cmake/posix_regex.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include <regex.h> -#include <string> -int main() { - std::string str = "test0159"; - regex_t re; - int ec = regcomp(&re, "^[a-z]+[0-9]+$", REG_EXTENDED | REG_NOSUB); - if (ec != 0) { - return ec; - } - return regexec(&re, str.c_str(), 0, nullptr, 0) ? -1 : 0; -} - http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/cmake/std_regex.cpp ---------------------------------------------------------------------- diff --git a/third_party/benchmark/cmake/std_regex.cpp b/third_party/benchmark/cmake/std_regex.cpp deleted file mode 100644 index 696f2a2..0000000 --- a/third_party/benchmark/cmake/std_regex.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include <regex> -#include <string> -int main() { - const std::string str = "test0159"; - std::regex re; - re = std::regex("^[a-z]+[0-9]+$", - std::regex_constants::extended | std::regex_constants::nosubs); - return std::regex_search(str, re) ? 0 : -1; -} - http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/include/benchmark/benchmark.h ---------------------------------------------------------------------- diff --git a/third_party/benchmark/include/benchmark/benchmark.h b/third_party/benchmark/include/benchmark/benchmark.h deleted file mode 100644 index 5da915e..0000000 --- a/third_party/benchmark/include/benchmark/benchmark.h +++ /dev/null @@ -1,537 +0,0 @@ -// Support for registering benchmarks for functions. - -/* Example usage: -// Define a function that executes the code to be measured a -// specified number of times: -static void BM_StringCreation(benchmark::State& state) { - while (state.KeepRunning()) - std::string empty_string; -} - -// Register the function as a benchmark -BENCHMARK(BM_StringCreation); - -// Define another benchmark -static void BM_StringCopy(benchmark::State& state) { - std::string x = "hello"; - while (state.KeepRunning()) - std::string copy(x); -} -BENCHMARK(BM_StringCopy); - -// Augment the main() program to invoke benchmarks if specified -// via the --benchmarks command line flag. E.g., -// my_unittest --benchmark_filter=all -// my_unittest --benchmark_filter=BM_StringCreation -// my_unittest --benchmark_filter=String -// my_unittest --benchmark_filter='Copy|Creation' -int main(int argc, char** argv) { - benchmark::Initialize(&argc, argv); - benchmark::RunSpecifiedBenchmarks(); - return 0; -} - -// Sometimes a family of microbenchmarks can be implemented with -// just one routine that takes an extra argument to specify which -// one of the family of benchmarks to run. For example, the following -// code defines a family of microbenchmarks for measuring the speed -// of memcpy() calls of different lengths: - -static void BM_memcpy(benchmark::State& state) { - char* src = new char[state.range_x()]; char* dst = new char[state.range_x()]; - memset(src, 'x', state.range_x()); - while (state.KeepRunning()) - memcpy(dst, src, state.range_x()); - state.SetBytesProcessed(int64_t_t(state.iterations) * int64(state.range_x())); - delete[] src; delete[] dst; -} -BENCHMARK(BM_memcpy)->Arg(8)->Arg(64)->Arg(512)->Arg(1<<10)->Arg(8<<10); - -// The preceding code is quite repetitive, and can be replaced with the -// following short-hand. The following invocation will pick a few -// appropriate arguments in the specified range and will generate a -// microbenchmark for each such argument. -BENCHMARK(BM_memcpy)->Range(8, 8<<10); - -// You might have a microbenchmark that depends on two inputs. For -// example, the following code defines a family of microbenchmarks for -// measuring the speed of set insertion. -static void BM_SetInsert(benchmark::State& state) { - while (state.KeepRunning()) { - state.PauseTiming(); - set<int> data = ConstructRandomSet(state.range_x()); - state.ResumeTiming(); - for (int j = 0; j < state.rangeY; ++j) - data.insert(RandomNumber()); - } -} -BENCHMARK(BM_SetInsert) - ->ArgPair(1<<10, 1) - ->ArgPair(1<<10, 8) - ->ArgPair(1<<10, 64) - ->ArgPair(1<<10, 512) - ->ArgPair(8<<10, 1) - ->ArgPair(8<<10, 8) - ->ArgPair(8<<10, 64) - ->ArgPair(8<<10, 512); - -// The preceding code is quite repetitive, and can be replaced with -// the following short-hand. The following macro will pick a few -// appropriate arguments in the product of the two specified ranges -// and will generate a microbenchmark for each such pair. -BENCHMARK(BM_SetInsert)->RangePair(1<<10, 8<<10, 1, 512); - -// For more complex patterns of inputs, passing a custom function -// to Apply allows programmatic specification of an -// arbitrary set of arguments to run the microbenchmark on. -// The following example enumerates a dense range on -// one parameter, and a sparse range on the second. -static benchmark::internal::Benchmark* CustomArguments( - benchmark::internal::Benchmark* b) { - for (int i = 0; i <= 10; ++i) - for (int j = 32; j <= 1024*1024; j *= 8) - b = b->ArgPair(i, j); - return b; -} -BENCHMARK(BM_SetInsert)->Apply(CustomArguments); - -// Templated microbenchmarks work the same way: -// Produce then consume 'size' messages 'iters' times -// Measures throughput in the absence of multiprogramming. -template <class Q> int BM_Sequential(benchmark::State& state) { - Q q; - typename Q::value_type v; - while (state.KeepRunning()) { - for (int i = state.range_x(); i--; ) - q.push(v); - for (int e = state.range_x(); e--; ) - q.Wait(&v); - } - // actually messages, not bytes: - state.SetBytesProcessed( - static_cast<int64_t>(state.iterations())*state.range_x()); -} -BENCHMARK_TEMPLATE(BM_Sequential, WaitQueue<int>)->Range(1<<0, 1<<10); - -In a multithreaded test, it is guaranteed that none of the threads will start -until all have called KeepRunning, and all will have finished before KeepRunning -returns false. As such, any global setup or teardown you want to do can be -wrapped in a check against the thread index: - -static void BM_MultiThreaded(benchmark::State& state) { - if (state.thread_index == 0) { - // Setup code here. - } - while (state.KeepRunning()) { - // Run the test as normal. - } - if (state.thread_index == 0) { - // Teardown code here. - } -} -BENCHMARK(BM_MultiThreaded)->Threads(4); -*/ - -#ifndef BENCHMARK_BENCHMARK_H_ -#define BENCHMARK_BENCHMARK_H_ - -#include <stdint.h> - -#include <functional> -#include <memory> -#include <string> -#include <thread> -#include <vector> -#include <mutex> - -#include "macros.h" - -namespace benchmark { -class BenchmarkReporter; - -void Initialize(int* argc, const char** argv); - -// Otherwise, run all benchmarks specified by the --benchmark_filter flag, -// and exit after running the benchmarks. -void RunSpecifiedBenchmarks(const BenchmarkReporter* reporter = nullptr); - -// ------------------------------------------------------ -// Routines that can be called from within a benchmark - -// If this routine is called, peak memory allocation past this point in the -// benchmark is reported at the end of the benchmark report line. (It is -// computed by running the benchmark once with a single iteration and a memory -// tracer.) -// TODO(dominic) -// void MemoryUsage(); - -// If a particular benchmark is I/O bound, or if for some reason CPU -// timings are not representative, call this method from within the -// benchmark routine. If called, the elapsed time will be used to -// control how many iterations are run, and in the printing of -// items/second or MB/seconds values. If not called, the cpu time -// used by the benchmark will be used. -void UseRealTime(); - -namespace internal { -class Benchmark; -class BenchmarkFamilies; -} - -// State is passed to a running Benchmark and contains state for the -// benchmark to use. -class State { - public: - // Returns true iff the benchmark should continue through another iteration. - bool KeepRunning(); - - void PauseTiming(); - void ResumeTiming(); - - // Set the number of bytes processed by the current benchmark - // execution. This routine is typically called once at the end of a - // throughput oriented benchmark. If this routine is called with a - // value > 0, the report is printed in MB/sec instead of nanoseconds - // per iteration. - // - // REQUIRES: a benchmark has exited its KeepRunning loop. - void SetBytesProcessed(int64_t bytes); - - // If this routine is called with items > 0, then an items/s - // label is printed on the benchmark report line for the currently - // executing benchmark. It is typically called at the end of a processing - // benchmark where a processing items/second output is desired. - // - // REQUIRES: a benchmark has exited its KeepRunning loop. - void SetItemsProcessed(int64_t items); - - // If this routine is called, the specified label is printed at the - // end of the benchmark report line for the currently executing - // benchmark. Example: - // static void BM_Compress(benchmark::State& state) { - // ... - // double compress = input_size / output_size; - // state.SetLabel(StringPrintf("compress:%.1f%%", 100.0*compression)); - // } - // Produces output that looks like: - // BM_Compress 50 50 14115038 compress:27.3% - // - // REQUIRES: a benchmark has exited its KeepRunning loop. - void SetLabel(const std::string& label); - - // Range arguments for this run. CHECKs if the argument has been set. - int range_x() const; - int range_y() const; - - int64_t iterations() const { return total_iterations_; } - - const int thread_index; - - private: - class FastClock; - struct SharedState; - struct ThreadStats; - - State(FastClock* clock, SharedState* s, int t); - bool StartRunning(); - bool FinishInterval(); - bool MaybeStop(); - void NewInterval(); - bool AllStarting(); - - static void* RunWrapper(void* arg); - void Run(); - void RunAsThread(); - void Wait(); - - enum EState { - STATE_INITIAL, // KeepRunning hasn't been called - STATE_STARTING, // KeepRunning called, waiting for other threads - STATE_RUNNING, // Running and being timed - STATE_STOPPING, // Not being timed but waiting for other threads - STATE_STOPPED // Stopped - }; - - EState state_; - - FastClock* clock_; - - // State shared by all BenchmarkRun objects that belong to the same - // BenchmarkInstance - SharedState* shared_; - - std::thread thread_; - - // Custom label set by the user. - std::string label_; - - // Each State object goes through a sequence of measurement intervals. By - // default each interval is approx. 100ms in length. The following stats are - // kept for each interval. - int64_t iterations_; - double start_cpu_; - double start_time_; - int64_t stop_time_micros_; - - double start_pause_cpu_; - double pause_cpu_time_; - double start_pause_real_; - double pause_real_time_; - - // Total number of iterations for all finished runs. - int64_t total_iterations_; - - // Approximate time in microseconds for one interval of execution. - // Dynamically adjusted as needed. - int64_t interval_micros_; - - // True if the current interval is the continuation of a previous one. - bool is_continuation_; - - std::unique_ptr<ThreadStats> stats_; - - friend class internal::Benchmark; - BENCHMARK_DISALLOW_COPY_AND_ASSIGN(State); -}; - -// Interface for custom benchmark result printers. -// By default, benchmark reports are printed to stdout. However an application -// can control the destination of the reports by calling -// RunSpecifiedBenchmarks and passing it a custom reporter object. -// The reporter object must implement the following interface. -class BenchmarkReporter { - public: - struct Context { - int num_cpus; - double mhz_per_cpu; - // std::string cpu_info; - bool cpu_scaling_enabled; - - // The number of chars in the longest benchmark name. - size_t name_field_width; - }; - - struct Run { - Run() - : thread_index(-1), - iterations(1), - real_accumulated_time(0), - cpu_accumulated_time(0), - bytes_per_second(0), - items_per_second(0), - max_heapbytes_used(0) {} - - std::string benchmark_name; - std::string report_label; - int thread_index; - int64_t iterations; - double real_accumulated_time; - double cpu_accumulated_time; - - // Zero if not set by benchmark. - double bytes_per_second; - double items_per_second; - - // This is set to 0.0 if memory tracing is not enabled. - double max_heapbytes_used; - }; - - // Called once for every suite of benchmarks run. - // The parameter "context" contains information that the - // reporter may wish to use when generating its report, for example the - // platform under which the benchmarks are running. The benchmark run is - // never started if this function returns false, allowing the reporter - // to skip runs based on the context information. - virtual bool ReportContext(const Context& context) const = 0; - - // Called once for each group of benchmark runs, gives information about - // cpu-time and heap memory usage during the benchmark run. - // Note that all the grouped benchmark runs should refer to the same - // benchmark, thus have the same name. - virtual void ReportRuns(const std::vector<Run>& report) const = 0; - - virtual ~BenchmarkReporter() {} -}; - -namespace internal { - -typedef std::function<void(State&)> BenchmarkFunction; - -// Run all benchmarks whose name is a partial match for the regular -// expression in "spec". The results of benchmark runs are fed to "reporter". -void RunMatchingBenchmarks(const std::string& spec, - const BenchmarkReporter* reporter); - -// Extract the list of benchmark names that match the specified regular -// expression. -void FindMatchingBenchmarkNames(const std::string& re, - std::vector<std::string>* benchmark_names); - -// ------------------------------------------------------ -// Benchmark registration object. The BENCHMARK() macro expands -// into an internal::Benchmark* object. Various methods can -// be called on this object to change the properties of the benchmark. -// Each method returns "this" so that multiple method calls can -// chained into one expression. -class Benchmark { - public: - // The Benchmark takes ownership of the Callback pointed to by f. - Benchmark(const char* name, BenchmarkFunction f); - - ~Benchmark(); - - // Note: the following methods all return "this" so that multiple - // method calls can be chained together in one expression. - - // Run this benchmark once with "x" as the extra argument passed - // to the function. - // REQUIRES: The function passed to the constructor must accept an arg1. - Benchmark* Arg(int x); - - // Run this benchmark once for a number of values picked from the - // range [start..limit]. (start and limit are always picked.) - // REQUIRES: The function passed to the constructor must accept an arg1. - Benchmark* Range(int start, int limit); - - // Run this benchmark once for every value in the range [start..limit] - // REQUIRES: The function passed to the constructor must accept an arg1. - Benchmark* DenseRange(int start, int limit); - - // Run this benchmark once with "x,y" as the extra arguments passed - // to the function. - // REQUIRES: The function passed to the constructor must accept arg1,arg2. - Benchmark* ArgPair(int x, int y); - - // Pick a set of values A from the range [lo1..hi1] and a set - // of values B from the range [lo2..hi2]. Run the benchmark for - // every pair of values in the cartesian product of A and B - // (i.e., for all combinations of the values in A and B). - // REQUIRES: The function passed to the constructor must accept arg1,arg2. - Benchmark* RangePair(int lo1, int hi1, int lo2, int hi2); - - // Pass this benchmark object to *func, which can customize - // the benchmark by calling various methods like Arg, ArgPair, - // Threads, etc. - Benchmark* Apply(void (*func)(Benchmark* benchmark)); - - // Support for running multiple copies of the same benchmark concurrently - // in multiple threads. This may be useful when measuring the scaling - // of some piece of code. - - // Run one instance of this benchmark concurrently in t threads. - Benchmark* Threads(int t); - - // Pick a set of values T from [min_threads,max_threads]. - // min_threads and max_threads are always included in T. Run this - // benchmark once for each value in T. The benchmark run for a - // particular value t consists of t threads running the benchmark - // function concurrently. For example, consider: - // BENCHMARK(Foo)->ThreadRange(1,16); - // This will run the following benchmarks: - // Foo in 1 thread - // Foo in 2 threads - // Foo in 4 threads - // Foo in 8 threads - // Foo in 16 threads - Benchmark* ThreadRange(int min_threads, int max_threads); - - // Equivalent to ThreadRange(NumCPUs(), NumCPUs()) - Benchmark* ThreadPerCpu(); - - // ------------------------------- - // Following methods are not useful for clients - - // Used inside the benchmark implementation - struct Instance; - - // Measure the overhead of an empty benchmark to subtract later. - static void MeasureOverhead(); - - private: - friend class BenchmarkFamilies; - - std::vector<Benchmark::Instance> CreateBenchmarkInstances(size_t rangeXindex, - size_t rangeYindex); - - std::string name_; - BenchmarkFunction function_; - size_t registration_index_; - std::vector<int> rangeX_; - std::vector<int> rangeY_; - std::vector<int> thread_counts_; - std::mutex mutex_; - - // Special value placed in thread_counts_ to stand for NumCPUs() - static const int kNumCpuMarker = -1; - - // Special value used to indicate that no range is required. - static const size_t kNoRangeIndex = std::numeric_limits<size_t>::max(); - static const int kNoRange = std::numeric_limits<int>::max(); - - static void AddRange(std::vector<int>* dst, int lo, int hi, int mult); - static double MeasurePeakHeapMemory(const Instance& b); - static void RunInstance(const Instance& b, const BenchmarkReporter* br); - friend class ::benchmark::State; - friend struct ::benchmark::internal::Benchmark::Instance; - friend void ::benchmark::internal::RunMatchingBenchmarks( - const std::string&, const BenchmarkReporter*); - BENCHMARK_DISALLOW_COPY_AND_ASSIGN(Benchmark); -}; - -// ------------------------------------------------------ -// Internal implementation details follow; please ignore - -// Simple reporter that outputs benchmark data to the console. This is the -// default reporter used by RunSpecifiedBenchmarks(). -class ConsoleReporter : public BenchmarkReporter { - public: - virtual bool ReportContext(const Context& context) const; - virtual void ReportRuns(const std::vector<Run>& reports) const; - - private: - std::string PrintMemoryUsage(double bytes) const; - virtual void PrintRunData(const Run& report) const; - mutable size_t name_field_width_; -}; - -} // end namespace internal -} // end namespace benchmark - -// ------------------------------------------------------ -// Macro to register benchmarks - -// Helpers for generating unique variable names -#define BENCHMARK_CONCAT(a, b, c) BENCHMARK_CONCAT2(a, b, c) -#define BENCHMARK_CONCAT2(a, b, c) a##b##c - -#define BENCHMARK(n) \ - static ::benchmark::internal::Benchmark* BENCHMARK_CONCAT( \ - __benchmark_, n, __LINE__) BENCHMARK_UNUSED = \ - (new ::benchmark::internal::Benchmark(#n, n)) - -// Old-style macros -#define BENCHMARK_WITH_ARG(n, a) BENCHMARK(n)->Arg((a)) -#define BENCHMARK_WITH_ARG2(n, a1, a2) BENCHMARK(n)->ArgPair((a1), (a2)) -#define BENCHMARK_RANGE(n, lo, hi) BENCHMARK(n)->Range((lo), (hi)) -#define BENCHMARK_RANGE2(n, l1, h1, l2, h2) \ - BENCHMARK(n)->RangePair((l1), (h1), (l2), (h2)) - -// This will register a benchmark for a templatized function. For example: -// -// template<int arg> -// void BM_Foo(int iters); -// -// BENCHMARK_TEMPLATE(BM_Foo, 1); -// -// will register BM_Foo<1> as a benchmark. -#define BENCHMARK_TEMPLATE(n, a) \ - static ::benchmark::internal::Benchmark* BENCHMARK_CONCAT( \ - __benchmark_, n, __LINE__) BENCHMARK_UNUSED = \ - (new ::benchmark::internal::Benchmark(#n "<" #a ">", n<a>)) - -#define BENCHMARK_TEMPLATE2(n, a, b) \ - static ::benchmark::internal::Benchmark* BENCHMARK_CONCAT( \ - __benchmark_, n, __LINE__) BENCHMARK_UNUSED = \ - (new ::benchmark::internal::Benchmark(#n "<" #a "," #b ">", n<a, b>)) - -#endif // BENCHMARK_BENCHMARK_H_ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/include/benchmark/macros.h ---------------------------------------------------------------------- diff --git a/third_party/benchmark/include/benchmark/macros.h b/third_party/benchmark/include/benchmark/macros.h deleted file mode 100644 index 5e75ed3..0000000 --- a/third_party/benchmark/include/benchmark/macros.h +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015 Google Inc. All rights reserved. -// -// 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. -#ifndef BENCHMARK_MACROS_H_ -#define BENCHMARK_MACROS_H_ - -#if __cplusplus < 201103L -# define BENCHMARK_DISALLOW_COPY_AND_ASSIGN(TypeName) \ - TypeName(const TypeName&); \ - TypeName& operator=(const TypeName&) -#else -# define BENCHMARK_DISALLOW_COPY_AND_ASSIGN(TypeName) \ - TypeName(const TypeName&) = delete; \ - TypeName& operator=(const TypeName&) = delete -#endif - -#if defined(__GNUC__) -# define BENCHMARK_UNUSED __attribute__((unused)) -# define BENCHMARK_ALWAYS_INLINE __attribute__((always_inline)) -#elif defined(_MSC_VER) && !defined(__clang__) -# define BENCHMARK_UNUSED -# define BENCHMARK_ALWAYS_INLINE __forceinline -#else -# define BENCHMARK_UNUSED -# define BENCHMARK_ALWAYS_INLINE -#endif - -#if defined(__GNUC__) -# define BENCHMARK_BUILTIN_EXPECT(x, y) __builtin_expect(x, y) -#else -# define BENCHMARK_BUILTIN_EXPECT(x, y) x -#endif - -#endif // BENCHMARK_MACROS_H_ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/src/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/third_party/benchmark/src/CMakeLists.txt b/third_party/benchmark/src/CMakeLists.txt deleted file mode 100644 index 5f22510..0000000 --- a/third_party/benchmark/src/CMakeLists.txt +++ /dev/null @@ -1,44 +0,0 @@ -# Allow the source files to find headers in src/ -include_directories(${PROJECT_SOURCE_DIR}/src) - -# Define the source files -set(SOURCE_FILES "benchmark.cc" "colorprint.cc" "commandlineflags.cc" - "log.cc" "sleep.cc" "string_util.cc" "sysinfo.cc" - "walltime.cc") -# Determine the correct regular expression engine to use -if(HAVE_STD_REGEX) - set(RE_FILES "re_std.cc") -elseif(HAVE_GNU_POSIX_REGEX) - set(RE_FILES "re_posix.cc") -elseif(HAVE_POSIX_REGEX) - set(RE_FILES "re_posix.cc") -else() - message(FATAL_ERROR "Failed to determine the source files for the regular expression backend") -endif() - -# Build the benchmark library -if (BENCHMARK_ENABLE_SHARED) - add_library(benchmark SHARED ${SOURCE_FILES} ${RE_FILES}) - find_package(Threads REQUIRED) - target_link_libraries(benchmark ${CMAKE_THREAD_LIBS_INIT}) -else() - add_library(benchmark STATIC ${SOURCE_FILES} ${RE_FILES}) -endif() - -set_target_properties(benchmark PROPERTIES - OUTPUT_NAME "benchmark" - VERSION ${GENERIC_LIB_VERSION} - SOVERSION ${GENERIC_LIB_SOVERSION} - ) - -# Install target (will install the library to specified CMAKE_INSTALL_PREFIX variable) -install( - TARGETS benchmark - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib - COMPONENT library) - -install( - DIRECTORY "${PROJECT_SOURCE_DIR}/include/benchmark" - DESTINATION include - FILES_MATCHING PATTERN "*.*h") http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/benchmark/src/arraysize.h ---------------------------------------------------------------------- diff --git a/third_party/benchmark/src/arraysize.h b/third_party/benchmark/src/arraysize.h deleted file mode 100644 index 3a7c0c7..0000000 --- a/third_party/benchmark/src/arraysize.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef BENCHMARK_ARRAYSIZE_H_ -#define BENCHMARK_ARRAYSIZE_H_ - -#include <cstddef> - -#include "internal_macros.h" - -namespace benchmark { -namespace internal { -// The arraysize(arr) macro returns the # of elements in an array arr. -// The expression is a compile-time constant, and therefore can be -// used in defining new arrays, for example. If you use arraysize on -// a pointer by mistake, you will get a compile-time error. -// - - -// This template function declaration is used in defining arraysize. -// Note that the function doesn't need an implementation, as we only -// use its type. -template <typename T, size_t N> -char (&ArraySizeHelper(T (&array)[N]))[N]; - -// That gcc wants both of these prototypes seems mysterious. VC, for -// its part, can't decide which to use (another mystery). Matching of -// template overloads: the final frontier. -#ifndef COMPILER_MSVC -template <typename T, size_t N> -char (&ArraySizeHelper(const T (&array)[N]))[N]; -#endif - -#define arraysize(array) (sizeof(::benchmark::internal::ArraySizeHelper(array))) - -} // end namespace internal -} // end namespace benchmark - -#endif // BENCHMARK_ARRAYSIZE_H_