- 26 Apr, 2018 1 commit
-
-
Tim Bradgate authored
* Allow support for negative regex filtering This patch allows one to apply a negation to the entire regex filter by appending it with a '-' character, much in the same style as GoogleTest uses. * Address issues in PR * Add unit tests for negative filtering
-
- 23 Apr, 2018 2 commits
-
-
Yangqing Jia authored
-
Victor Costan authored
-
- 19 Apr, 2018 1 commit
-
-
Dominic Hamon authored
Before this change, we would report the number of requested iterations passed to the state. After, we will report the actual number run. As a side-effect, instead of multiplying the expected iterations by the number of threads to get the total number, we can report the actual number of iterations across all threads, which takes into account the situation where some threads might run more iterations than others.
-
- 12 Apr, 2018 1 commit
-
-
Dominic Hamon authored
* Ensure 64-bit truncation doesn't happen for complexity results * One more complexity_n 64-bit fix * Missed another vector of int * Piping through the int64_t
-
- 09 Apr, 2018 1 commit
-
-
Fred Tingaud authored
-
- 06 Apr, 2018 1 commit
-
-
Eric Fiselier authored
-
- 03 Apr, 2018 1 commit
-
-
Dominic Hamon authored
* Allow AddRange to work with int64_t. Fixes #516 Also, tweak how we manage per-test build needs, and create a standard _gtest suffix for googletest to differentiate from non-googletest tests. I also ran clang-format on the files that I changed (but not the benchmark include or main src as they have too many clang-format issues). * Add benchmark_gtest to cmake * Set(Items|Bytes)Processed now take int64_t
-
- 25 Mar, 2018 1 commit
-
-
Dominic Hamon authored
-
- 23 Mar, 2018 2 commits
-
-
Eric authored
* Add tests to verify assembler output -- Fix DoNotOptimize. For things like `DoNotOptimize`, `ClobberMemory`, and even `KeepRunning()`, it is important exactly what assembly they generate. However, we currently have no way to test this. Instead it must be manually validated every time a change occurs -- including a change in compiler version. This patch attempts to introduce a way to test the assembled output automatically. It's mirrors how LLVM verifies compiler output, and it uses LLVM FileCheck to run the tests in a similar way. The tests function by generating the assembly for a test in CMake, and then using FileCheck to verify the // CHECK lines in the source file are found in the generated assembly. Currently, the tests only run on 64-bit x86 systems under GCC and Clang, and when FileCheck is found on the system. Additionally, this patch tries to improve the code gen from DoNotOptimize. This should probably be a separate change, but I needed something to test. * Disable assembly tests on Bazel for now * Link FIXME to github issue * Fix Tests on OS X * fix strip_asm.py to work on both Linux and OS X like targets
-
Dominic Hamon authored
Having the copts set on a per-target level can lead to ODR violations in some cases. Avoid this by ensuring the regex engine is picked through compiler intrinsics in the header directly.
-
- 21 Mar, 2018 2 commits
-
-
Eric Fiselier authored
This patch disables the -Winvalid-offsetof warning for GCC and Clang when using it to check the cache lines of the State object. Technically this usage of offsetof is undefined behavior until C++17. However, all major compilers support this application as an extension, as demonstrated by the passing static assert (If a compiler encounters UB during evaluation of a constant expression, that UB must be diagnosed). Unfortunately, Clang and GCC also produce a warning about it. This patch temporarily suppresses the warning using #pragma's in the source file (instead of globally suppressing the warning in the build systems). This way the warning is ignored for both CMake and Bazel builds without having to modify either build system.
-
Eric Fiselier authored
Older CMake versions, in particular 2.8, don't seem to correctly handle interface include directories. This causes failures when building the tests. Additionally, older CMake versions use a different library install directory than expected (i.e. they use lib/<target-triple>). This caused certain tests to fail to link. This patch fixes both those issues. The first by manually adding the correct include directory when building the tests. The second by specifying the library output directory when configuring the GTest build.
-
- 16 Mar, 2018 1 commit
-
-
Dominic Hamon authored
-
- 08 Mar, 2018 1 commit
-
-
jmillikin-stripe authored
* Add myself to CONTRIBUTORS under the corp CLA for Stripe, Inc. * Add support for building with Bazel. Limitations compared to existing CMake rules: * Defaults to using C++11 `<regex>`, with an override via Bazel flag `--define` of `google_benchmark.have_regex`. The TravisCI config sets the regex implementation to `posix` because it uses ancient compilers. * Debug vs Opt mode can't be set per test. TravisCI runs all the tests in debug mode to satisfy `diagnostics_test`, which depends on `CHECK` being live. * Set Bazel workspace name so other repos can refer to it by stable name. This is recommended by the Bazel style guide to avoid each dependent workspace defining its own name for the dependency.
-
- 07 Mar, 2018 1 commit
-
-
Wink Saville authored
* Rename StringXxx to StrXxx in string_util.h and its users This makes the naming consistent within string_util and moves is the Abseil convention. * Style guide is 2 spaces before end of line "//" comments * Rename StrPrintF/StringPrintF to StrFormat for absl compatibility.
-
- 06 Mar, 2018 2 commits
-
-
Wink Saville authored
On Windows the Shlwapi.h file has a macro: #define StrCat lstrcatA And benchmark/src/string_util.h defines StrCat and it is renamed to lstrcatA if we don't undef the macro in Shlwapi.h. This is an innocuous bug if string_util.h is included after Shlwapi.h, but it is a compile error if string_util.h is included before Shlwapi.h. This fixes issue #545.
-
Wink Saville authored
Upstream spelling fix changes from Pony, ec47ba8f565726414552f4bbf97d7, by ka7@la-evento.com that effected google/benchmark.
-
- 02 Mar, 2018 2 commits
-
-
alekseyshl authored
* Add Solaris support Define BENCHMARK_OS_SOLARIS for Solaris. Platform specific implementations added: * number of CPUs detection * CPU cycles per second detection * Thread CPU usage * Process CPU usage * Remove the special case for per process CPU time for Solaris, it's the same as the default.
-
Robert Guo authored
-
- 21 Feb, 2018 4 commits
-
-
Eric authored
* Print the executable name as part of the context. A common use case of the library is to run two different versions of a benchmark to compare them. In my experience this often means compiling a benchmark twice, renaming one of the executables, and then running the executables back-to-back. In this case the name of the executable is important contextually information. Unfortunately the benchmark does not report this information. This patch adds the executable name to the context reported by the benchmark. * attempt to fix tests on Windows * attempt to fix tests on Windows
-
Jonathan Wakely authored
-
Jonathan Wakely authored
-
Eric Fiselier authored
Due to ADL lookup performed on the begin and end functions of `for (auto _ : State)`, std::iterator_traits may get incidentally instantiated. This patch ensures the library can tolerate that.
-
- 14 Feb, 2018 2 commits
-
-
Ian McKellar authored
* Don't include <sys/resource.h> on Fuchsia. It doesn't support POSIX resource measurement and timing APIs. Change-Id: Ifab4bac4296575f042c699db1ce5a4f7c2d82893 * Add BENCHMARK_OS_FUCHSIA for Fuchsia Change-Id: Ic536f9625e413270285fbfd08471dcb6753ddad1
-
Eric authored
* Improve State packing: put important members on first cache line. This patch does a few different things to ensure commonly accessed data is on the first cache line of the `State` object. First, it moves the `error_occurred_` member to reside after the `started_` and `finished_` bools, since there was internal padding there that was unused. Second, it moves `batch_leftover_` and `max_iterations` further up in the struct declaration. These variables are used in the calculation of `iterations()` which users might call within the loop. Therefore it's more important they exist on the first cache line. Finally, this patch turns the bool members into bitfields. Although this shouldn't have much of an effect currently, because padding is still needed between the last bool and the first size_t, it should help in future changes that require more "bool like" members. * Remove bitfield change for now * Move bools (and their padding) to end of "first cache line" vars. I think it makes the most sense to move the padding required following the group of bools to the end of the variables we want on the first cache line. This also means that the `total_iterations_` variable, which is the most accessed, has the same address as the State object. * Fix static assertion after moving bools
-
- 13 Feb, 2018 5 commits
-
-
Samuel Panzer authored
* Support State::KeepRunningBatch(). State::KeepRunning() can take large amounts of time relative to quick operations (on the order of 1ns, depending on hardware). For such sensitive operations, it is recommended to run batches of repeated operations. This commit simplifies handling of total_iterations_. Rather than predecrementing such that total_iterations_ == 1 signals that KeepRunning() should exit, total_iterations_ == 0 now signals the intention for the benchmark to exit. * Create better fast path in State::KeepRunningBatch() * Replace int parameter with size_t to fix signed mismatch warnings * Ensure benchmark State has been started even on error. * Simplify KeepRunningBatch() * Implement KeepRunning() in terms of KeepRunningBatch(). * Improve codegen by helping the compiler undestand dead code. * Dummy commit for build bots' benefit.
-
Eric authored
* Attempt to fix travis timeouts during apt-get. During some builds, travis fails to update the apt-get indexes. This causes the build to fail in different ways. This patch attempts to avoid this issue by manually calling apt-get update. I'm not sure if it'll work, but it's worth a try. * Fix missing semicolons in command
-
Eric Fiselier authored
The appveyor bot sometimes fails because the time it outputs is 6 digits long, but the output test regex expects at most 5 digits. This patch increases the size to 6 digits to placate the test. This should not *really* affect the correctness of the test.
-
Eric Fiselier authored
-
Eric authored
We're propagating extra warning flags to the gtest build, which can cause it to fail. This patch prevents passing "-Wextra" to gtest, since the library itself doesn't test with that flag.
-
- 10 Feb, 2018 1 commit
-
-
Samuel Panzer authored
* Support State::KeepRunningBatch(). State::KeepRunning() can take large amounts of time relative to quick operations (on the order of 1ns, depending on hardware). For such sensitive operations, it is recommended to run batches of repeated operations. This commit simplifies handling of total_iterations_. Rather than predecrementing such that total_iterations_ == 1 signals that KeepRunning() should exit, total_iterations_ == 0 now signals the intention for the benchmark to exit. * Create better fast path in State::KeepRunningBatch() * Replace int parameter with size_t to fix signed mismatch warnings * Ensure benchmark State has been started even on error. * Simplify KeepRunningBatch()
-
- 04 Feb, 2018 1 commit
-
-
Tim authored
-
- 29 Jan, 2018 1 commit
-
-
Dominic Hamon authored
-
- 19 Jan, 2018 1 commit
-
-
oskidan authored
conversion in sysinfo.cc
-
- 12 Jan, 2018 1 commit
-
-
Dominic Hamon authored
Some command line or build systems may already set these (eg, bazel) so make sure that takes priority. Fixes #513
-
- 05 Jan, 2018 3 commits
-
-
Eric authored
Prevent GTest and GMock from being installed with Google Benchmark.
-
Eric Fiselier authored
When users satisfy the GTest dependancy by placing a googletest directory in the project, the targets from GTest and GMock incorrectly get installed along side this library. We shouldn't be installing our test dependancies. This patch forces the options that control installation for googletest to OFF.
-
Winston Du authored
For people who get this library via CMake's AddExternalProject like me. Would like a long term tutorial from someone who really understands CMake on how to actually link an externalproject's dependencies to another added external project.
-
- 14 Dec, 2017 1 commit
-
-
Dominic Hamon authored
-