Skip to content
  1. Sep 19, 2018
  2. Aug 28, 2018
    • Kirill Bobyrev's avatar
      Pull google/benchmark library to the LLVM tree · 0addd170
      Kirill Bobyrev authored
      This patch pulls google/benchmark v1.4.1 into the LLVM tree so that any
      project could use it for benchmark generation. A dummy benchmark is
      added to `llvm/benchmarks/DummyYAML.cpp` to validate the correctness of
      the build process.
      
      The current version does not utilize LLVM LNT and LLVM CMake
      infrastructure, but that might be sufficient for most users. Two
      introduced CMake variables:
      
      * `LLVM_INCLUDE_BENCHMARKS` (`ON` by default) generates benchmark
        targets
      * `LLVM_BUILD_BENCHMARKS` (`OFF` by default) adds generated
        benchmark targets to the list of default LLVM targets (i.e. if `ON`
        benchmarks will be built upon standard build invocation, e.g. `ninja` or
        `make` with no specific targets)
      
      List of modifications:
      
      * `BENCHMARK_ENABLE_TESTING` is disabled
      * `BENCHMARK_ENABLE_EXCEPTIONS` is disabled
      * `BENCHMARK_ENABLE_INSTALL` is disabled
      * `BENCHMARK_ENABLE_GTEST_TESTS` is disabled
      * `BENCHMARK_DOWNLOAD_DEPENDENCIES` is disabled
      
      Original discussion can be found here:
      http://lists.llvm.org/pipermail/llvm-dev/2018-August/125023.html
      
      Reviewed by: dberris, lebedev.ri
      
      Subscribers: ilya-biryukov, ioeric, EricWF, lebedev.ri, srhines,
      dschuff, mgorny, krytarowski, fedor.sergeev, mgrang, jfb, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D50894
      
      llvm-svn: 340809
      0addd170
  3. Jul 10, 2018
  4. Jan 18, 2018
  5. Apr 18, 2017
  6. Aug 09, 2016
    • Eric Fiselier's avatar
      Update in-tree Google Benchmark to current ToT. · f6e09e53
      Eric Fiselier authored
      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
      f6e09e53
  7. Jul 20, 2016
    • Eric Fiselier's avatar
      [libcxx] Add support for benchmark tests using Google Benchmark. · b08d8b18
      Eric Fiselier authored
      Summary:
      This patch does the following:
      
      1. Checks in a copy of the Google Benchmark library into the libc++ repo under `utils/google-benchmark`.
      2. Teaches libc++ how to build Google Benchmark against both (A) in-tree libc++ and (B) the platforms native STL.
      3. Allows performance benchmarks to be built as part of the libc++ build.
      
      Building the benchmarks (and Google Benchmark) is off by default. It must be enabled using the CMake option `-DLIBCXX_INCLUDE_BENCHMARKS=ON`. When this option is enabled the tests under `libcxx/benchmarks`  can be built using the `libcxx-benchmarks` target.
      
      On Linux platforms where libstdc++ is the default STL the CMake option `-DLIBCXX_BUILD_BENCHMARKS_NATIVE_STDLIB=ON` can be used to build each benchmark test against libstdc++ as well. This is useful for comparing performance between standard libraries.
      
      Support for benchmarks is currently very minimal. They must be manually run by the user and there is no mechanism for detecting performance regressions.
      
      Known Issues:
      
      * `-DLIBCXX_INCLUDE_BENCHMARKS=ON` is only supported for Clang, and not GCC, since the `-stdlib=libc++` option is needed to build Google Benchmark.
      
      
      
      
      
      
      
      
      Reviewers: danalbert, dberlin, chandlerc, mclow.lists, jroelofs
      
      Subscribers: chandlerc, dberlin, tberghammer, danalbert, srhines, hfinkel
      
      Differential Revision: https://reviews.llvm.org/D22240
      
      llvm-svn: 276049
      b08d8b18
Loading