Commit Graph

1243 Commits

Author SHA1 Message Date
Dominic Hamon 6cf20f1e02
Suppress GoogleTest warnings on windows (MSVC) too. (#1320)
Fixes #1209
2022-01-13 14:21:43 +00:00
Dominic Hamon 5531ec80f7
Add docs on Memory profiling (#1217). (#1319) 2022-01-13 10:19:22 +00:00
Dominic Hamon 31e7941796
Add docs for `ThreadRange`. (#1318)
Fixes #1297
2022-01-12 15:07:31 +00:00
Dominic Hamon 0d98dba29d Creating release commit for v1.6.1 2022-01-10 19:14:27 +00:00
staffantj 0e78738a25
Destructor not returning is expected in some cases (#1316)
* Address MSVC C4722 warning in tests

Some test paths deliberately exit, and it appears that the appropriate declspec
does not stop the compiler generating the C4722 warning as one might expect.

Per https://github.com/google/benchmark/issues/826#issuecomment-851995549
this commit ignores the warning for the affected call site.

* Fix up Formatting

* Fix up formatting issue on pragmas

* Fix up formatting issue on pragmas take 2

Co-authored-by: Staffan Tjernstrom <staffantj@users.noreply.github.com>
2022-01-10 15:44:42 +00:00
staffantj 6dfe7afbc3
Address c4267 warning on MSVC (#1315)
* Fix #1159 Harmonize the types between the loop counter and the vector of indices

The loop counter is a size_t, but they're stored in a vector-of-int leading to
potential overflow warnings. In order to avoid accidental run-time overflow
this change modifies the vector type, rather than the loop counter.

* Fix up line endings

* Update AUTHORS

Add Staffan Tjernstrom <staffantj@gmail.com>

Co-authored-by: Staffan Tjernstrom <staffantj@users.noreply.github.com>
2022-01-10 14:43:29 +00:00
Roman Lebedev 3b3de69400
Fix `-DBENCHMARK_ENABLE_INSTALL=OFF` (Fixes #1275) (#1305)
Otherwise this fails with
```
CMake Error at src/CMakeLists.txt:154 (export):
  export Export set "benchmarkTargets" not found.
```

This is what https://cmake.org/cmake/help/latest/guide/importing-exporting/index.html#exporting-targets
seems to suggest.

While there, really respect BENCHMARK_ENABLE_INSTALL,
BENCHMARK_INSTALL_DOCS shouldn't override it.
2021-12-14 09:46:23 +00:00
Martin Storsjö b000672793
Avoid errors due to "default label in switch which covers all enumeration values" in Windows codepath (#1302)
This applies a fix that used to exist in LLVM's downstream copy of
this library, from
948ce4e6ed.

I presume this warning isn't present if built with MSVC or Clang-cl,
but it's printed in MinGW mode. As the benchmark library adds
-Werror, this is a fatal error when builtin MinGW mode.
2021-12-09 09:24:54 +00:00
Dominic Hamon 1f99405076
update googletest to latest release tag 1.11.0 (#1301)
* update googletest to latest release tag 1.11.0

* fix cmake builds to the same release
2021-12-08 16:30:03 +00:00
dominc8 ab867074da
clang-tidy: readability-redundant and performance (#1298)
* clang-tidy: readability-redundant-*

* clang-tidy: performance-*
2021-12-06 11:18:04 +00:00
Shawn Zhong fd258bbd13
Update user_guide.md (#1296) 2021-12-02 09:40:35 +00:00
Robert Adam fe2e8aa1b4
Fix broken link to Setup/Teardown section (#1291) 2021-11-26 11:37:16 +00:00
dominc8 680d3fdbb5
Add clang-tidy check (#1290)
* Add clang-tidy.yml and .clang-tidy

* Add mention to authors/contributors

* Temp fix 2 clang-tidy issues

* Enable clang-tidy on pull requests

* Exclude gtest source files from clang-tidy
2021-11-25 15:47:44 +00:00
Roman Lebedev d6ba952fc1
compare.py: compute and print 'OVERALL GEOMEAN' aggregate (#1289)
Despite the wide variety of the features we provide,
some people still have the audacity to complain and demand more.

Concretely, i *very* often would like to see the overall result
of the benchmark. Is the 'new' better or worse, overall,
over all the non-aggregate time/cpu measurements.

This comes up for me most often when i want to quickly see
what effect some LLVM optimization change has on the benchmark.

The idea is straight-forward, just produce four lists:
wall times for LHS benchmark, CPU times for LHS benchmark,
wall times for RHS benchmark, CPU times for RHS benchmark;
then compute geomean for each one of those four lists,
and compute the two percentage change between
* geomean wall time for LHS benchmark and geomean wall time for RHS benchmark
* geomean CPU time for LHS benchmark and geomean CPU time for RHS benchmark
and voila!

It is complicated by the fact that it needs to graciously handle
different time units, so pandas.Timedelta dependency is introduced.
That is the only library that does not barf upon floating times,
i have tried numpy.timedelta64 (only takes integers)
and python's datetime.timedelta (does not take nanosecons),
and they won't do.

Fixes https://github.com/google/benchmark/issues/1147
2021-11-24 10:47:08 +00:00
Dominic Hamon ce92bbfb90 remove long-defunct cli parameter 2021-11-19 19:58:08 +00:00
Dominic Hamon 88ea9d9005 lose some build warnings 2021-11-19 19:54:05 +00:00
Vy Nguyen 91ed7eea68
Disable clang-tidy (unused-using-decls) (#1287)
The NOLINTBEGIN block only covers warnings on `long` types and other styling issues but not clang-tidies.
2021-11-19 11:12:59 +00:00
Vy Nguyen 8722d6f014
disable lint check where we know it'd fail (#1286)
* disable lint check where we know it'd fail

one less noisy presubmit

* clang format

* remove ws
2021-11-17 17:57:36 +00:00
Vy Nguyen b5bb9f0675
Add Setup/Teardown option on Benchmark. (#1269)
* Add Setup/Teardown option on Benchmark.

Motivations:
- feature parity with our internal library. (which has ~718 callers)
- more flexible than cordinating setup/teardown inside the benchmark routine.

* change Setup/Teardown callback type to raw function pointers

* add test file to cmake file

* move b.Teardown() up

* add const to param of Setup/Teardown callbacks

* fix  comment and add doc to user_guide

* fix typo

* fix doc, fix test and add bindings to python/benchmark.cc

* fix binding again

* remove explicit C cast - that was wrong

* change policy to reference_internal

* try removing the bindinds ...

* clean up

* add more tests with repetitions and fixtures

* more comments

* init setup/teardown callbacks to NULL

* s/nullptr/NULL

* removed unused var

* change assertion on fixture_interaction::fixture_setup

* move NULL init to .cc file
2021-11-17 16:51:55 +00:00
Donald Aingworth a07f6d1789
Googletest renamed master to main today. (#1285)
Co-authored-by: Donald Aingworth <donald@midpointmarkets.org>
2021-11-17 09:45:03 +00:00
Teodor Spæren 8401429e74
Remove bazelbuild/rules_cc dependency (#1283)
It seems according to [1] that bazelbuild/rules_cc has been put on hold
and that the recommended way for now, is to use the native cc rules.

[1]: https://github.com/bazelbuild/rules_go/pull/2950
2021-11-14 12:02:58 +00:00
Alisenai 926f61da9a
Support for building with LLVM clang-10/clang-11 on Windows. (#1227)
* Fix enum underlying type specification

* Fix C++0x-only solution
2021-11-14 11:52:27 +00:00
Nicholas Junge a17480dd34
Fix dependency typo and unpin cibuildwheel version in wheel building … (#1263)
* Fix dependency typo and unpin cibuildwheel version in wheel building action

* Move to monolithic build jobs, restrict to x64 architectures

As of this commit, all wheel building jobs complete on GitHub Actions. Since some platform-specific options had to be set to fix different types of build problems underway, the build job matrix was unrolled.

Still left TODO:
* Wheel testing after build (running the Python bindings test)
* Emulating bazel on other architectures to build aarch64/i686/ppc64le
* Enabling Win32 (this fails due to linker errors).

* Add binding test commands for all wheels, set macOSX deployment target to 10.9

* Add instructions for updating Python __version__ variable before release creation
2021-11-11 14:51:22 +00:00
Dominic Hamon b3c08f6ec3
check clang format on pull requests and merges (#1281)
* check clang format on pull requests and merges

* manage some formatting by hand

* undo one format too many
2021-11-10 16:49:49 +00:00
Dominic Hamon c07a498924
format tests with clang-format (#1282) 2021-11-10 16:22:31 +00:00
Dominic Hamon fcef4fb669
clang-format Google on {src/,include/} (#1280) 2021-11-10 16:04:32 +00:00
Bensuperpc 431abd149f
Fix warning with MacOS (#1276)
* Fix warning with MacOS

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>

* Re-trigger GitHub actions

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>

* Fix style

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>

* Revert "Fix style"

This reverts commit 1d5fe9ce87.

* Fix style only on changes

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
2021-11-08 12:39:36 +00:00
Vy Nguyen 4b99670c57
Fixed typo in doc: s/marcro/macro (#1274)
* Fixed typo s/marcro/macro

* undo stray NL

* abc
2021-11-08 10:04:03 +00:00
Bensuperpc 329fb06d99
Fix error with Fix Werror=old-style-cast (#1272)
* Fix Werror=old-style-cast

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>

* Fix Werror=old-style-cast

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>

* Fix Werror=old-style-cast

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>

* Fix typo

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>

* Fix build error with MacOS

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>

* Revert "Fix build error with MacOS"

This reverts commit cee213bb95.
2021-11-04 12:09:10 +00:00
Bensuperpc 8826ef792f
Fix error Wshorten-64-to-32 (#1273)
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
2021-11-04 10:26:11 +00:00
Vy Nguyen 8aae0a4f67
[cleanup] Change `== ""` to `.empty()` on string to avoid clang-tidy warnings (#1271) 2021-11-03 14:54:07 +00:00
Vy Nguyen 4f31803ebb
Fix un-initted error in test and fix change the API previously proposed to use std::string instead of raw char* (#1266)
* Fix un-initted error in test.

Found by -Werror,-Wsometimes-uninitialized

* Update spec_arg_test.cc

* additional change:
- Change the API on GetBenchmarkFilter and the `spec` to std::string because google C++ styleguide internally kind of discouraged  using raw const char*
2021-10-29 11:48:56 +01:00
Dominic Hamon da01c5e662
use docker container for ubuntu-16.04 builds (#1265)
* use docker container for ubuntu-16.04 builds

* install some bits

* no sudo in docker container

* cmake, not cmake3

* include perfcounters

* still no sudo in docker containers

* yes please, apt
2021-10-27 16:29:37 +01:00
Vy Nguyen 4f47ed2c9a
[RFC] Adding API for setting/getting benchmark_filter flag? (#1254)
* [RFC] Adding API for setting/getting benchmark_filter flag?

This PR is more of a Request-for-comment - open to other ideas/suggestions as well.

Details:
This flag has different implementations(absl vs benchmark) and since the proposal to add absl as a dependency was rejected, it would be nice to have a reliable (and less hacky) way to access this flag internally.
(Actually, reading it isn't much a problem but setting it is).

Internally, we have a sizeable number users to use absl::SetFlags to set this flag. This will not work with benchmark-flags.

Another motivation is that not all users use the command line flag. Some prefer to programmatically set this value.

* fixed build errors

* fix lints again

* per discussion: add additional RunSpecifiedBenchmarks instead.

* add tests

* fix up tests

* clarify comment

* fix stray : in test

* more assertion in test

* add test file to test/CMakeLists.txt

* more test

* make test ISO C++ compliant

* fix up BUILD file to pass the flag
2021-10-27 08:52:57 +01:00
Vy Nguyen fca348296f
Allow template arguments to be specified directly on the BENCHMARK macro (#1262)
* Allow template arguments to be specifed directly on the BENCHMARK macro/

Use cases:
 - more convenient (than having to use a separate BENCHMARK_TEMPLATE)
 - feature parity with our internal library.

* fix tests

* updated docs
2021-10-26 15:38:12 +01:00
Vitaly Zaitsev 365670e432
Added Doxygen support. (#1228)
Signed-off-by: Vitaly Zaitsev <vitaly@easycoding.org>
2021-10-25 12:32:33 +01:00
Byoungchan Lee 80d70ddd94
Fix -Wdeprecated-declarations warning once more. (#1256)
In #1238, one of MemoryManager's Stop methods was marked as deprecated
and this method is used in the same header. This change generated
-Wdeprecated-declarations warning on every file that includes
"benchmark.h". Use gcc's diagnostics to fix this warning.
2021-10-21 10:10:38 +01:00
Roman Lebedev 1e3ab7fa43
Merge remote-tracking branch 'upstream/pr/1240'
* upstream/pr/1240:
  cmake: allow to use package config from build directory
2021-10-19 12:23:32 +03:00
Sergiu Deitsch 1be88c0683 cmake: allow to use package config from build directory 2021-10-19 11:11:11 +02:00
Roman Lebedev 3395949553
Merge remote-tracking branch 'upstream/pr/1244'
* upstream/pr/1244:
  cmake: make package config relocatable
2021-10-19 12:06:05 +03:00
Sergiu Deitsch eb9100bf41 cmake: make package config relocatable 2021-10-19 11:05:29 +02:00
Roman Lebedev 2f30903ca2
GoogleTest.cmake.in: mention BENCHMARK_USE_BUNDLED_GTEST 2021-10-19 11:32:26 +03:00
Roman Lebedev 8c8052aa7b
GoogleTest.cmake.in: immediately error-out after failure message, Closes #1255
Results in a bit nicer output when googletest was not found.
2021-10-19 11:31:32 +03:00
Vy Nguyen 7fad964a94
Introduce additional memory metrics (#1238)
- added total_allocs and net_allocs
  - updated reporter code to report these, if available.
2021-10-18 16:29:35 +01:00
Byoungchan Lee f730846b0a
Fix -Wdeprecated-declarations warning triggered by clang-cl. (#1245)
WebRTC uses Google Benchmarks as a dependency and uses Chromium's build
infrastructure. Chromium is compiled using clang-cl on Windows, and the
-Wdeprecated-declarations warning is triggered. Because clang-cl accepts
gcc's diagnostic prama and defines the __clang__ macro,
using it can solve this issue.

Bug: webrtc:13280
2021-10-18 11:31:51 +01:00
PhilipDeegan 285e5e9771
Cmake: options for controlling werror, disable werror for PGI compilers (#1246) 2021-10-18 09:41:25 +01:00
Sergiu Deitsch 59bbc7fd9d
cmake: eliminate redundant `target_include_directories` (#1242) 2021-10-17 15:07:19 +03:00
Dominic Hamon 0baacde361
Update policy to match reality 2021-09-20 10:19:51 +01:00
Vy Nguyen 713b917718
Fix mention of --benchmarks in comment (#1229)
This flag doesn't exist ever in OSS benchmark.
2021-09-13 21:00:14 +01:00
Vitaly Zaitsev 400ed3f57a
Added support of packaged GTest for running unit tests. (#1226)
Signed-off-by: Vitaly Zaitsev <vitaly@easycoding.org>
2021-09-12 18:57:57 +03:00