Commit Graph

31 Commits

Author SHA1 Message Date
Eric
25acf220a4 Refactor most usages of KeepRunning to use the perfered ranged-for. (#459)
Recently the library added a new ranged-for variant of the KeepRunning
loop that is much faster. For this reason it should be preferred in all
new code.

Because a library, its documentation, and its tests should all embody
the best practices of using the library, this patch changes all but a
few usages of KeepRunning() into for (auto _ : state).

The remaining usages in the tests and documentation persist only
to document and test behavior that is different between the two formulations.

Also note that because the range-for loop requires C++11, the KeepRunning
variant has not been deprecated at this time.
2017-10-17 12:17:02 -06:00
Roman Lebedev
b9be142d1e Json reporter: don't cast floating-point to int; adjust tooling (#426)
* Json reporter: passthrough fp, don't cast it to int; adjust tooling

Json output format is generally meant for further processing
using some automated tools. Thus, it makes sense not to
intentionally limit the precision of the values contained
in the report.

As it can be seen, FormatKV() for doubles, used %.2f format,
which was meant to preserve at least some of the precision.
However, before that function is ever called, the doubles
were already cast to the integer via RoundDouble()...

This is also the case for console reporter, where it makes
sense because the screen space is limited, and this reporter,
however the CSV reporter does output some( decimal digits.

Thus i can only conclude that the loss of the precision
was not really considered, so i have decided to adjust the
code of the json reporter to output the full fp precision.

There can be several reasons why that is the right thing
to do, the bigger the time_unit used, the greater the
precision loss, so i'd say any sort of further processing
(like e.g. tools/compare_bench.py does) is best done
on the values with most precision.

Also, that cast skewed the data away from zero, which
i think may or may not result in false- positives/negatives
in the output of tools/compare_bench.py

* Json reporter: FormatKV(double): address review note

* tools/gbench/report.py: skip benchmarks with different time units

While it may be useful to teach it to operate on the
measurements with different time units, which is now
possible since floats are stored, and not the integers,
but for now at least doing such a sanity-checking
is better than providing misinformation.
2017-07-24 16:13:55 -07:00
Dmitry Trifonov
7a74b74856 fix for android NDK r10e (#375) 2017-04-20 20:07:52 -06:00
Eric Fiselier
36a251ab3e Fix #300. Emit RMS as a float not a percentage in JSON 2016-10-07 22:26:01 -06:00
Eric Fiselier
2555035f44 Use correct RE for floating point numbers in reporter_output_test.cc 2016-10-07 21:56:22 -06:00
Dominic Hamon
1100e91907 Simplify clang-format and apply to tests (#302) 2016-10-07 11:04:50 -07:00
Eric
0ed4456097 Refactor output test runner into standalone module. (#277)
* refactor

* Move default substitutions into library

* Move default substitutions to the *right* place in the library

* Fix init order issues that caused test failures

* improve diagnostics

* add missing include

* general cleanup

* Address review comments
2016-08-28 13:24:16 -06:00
Eric Fiselier
a7a7c56152 Workaround flaky complexity_test.cc test case.
See https://github.com/google/benchmark/issues/272
2016-08-09 14:14:15 -06:00
Eric Fiselier
ee54a3f03e Rework Appveyor config
Currently the Appveyor bot is a PIT. It never passes and it often hangs
or gives very poor output. This patch rewrites the configuration.

This patch also attempts to fix a flaky complexity test as a drive-by.
2016-08-08 02:04:59 -06:00
Marcin Kolny
dfe0260754 Support multiple ranges in the benchmark (#257)
* Support multiple ranges in the benchmark

google-benchmark library allows to provide up to two ranges to the
benchmark method (range_x and range_y). However, in many cases it's not
sufficient. The patch introduces multi-range features, so user can easily
define multiple ranges by passing a vector of integers, and access values
through the method range(i).

* Remove redundant API

Functions State::range_x() and State::range_y() have been removed. They should
be replaced by State::range(0) and State::range(1).
Functions Benchmark::ArgPair() and Benchmark::RangePair() have been removed.
They should be replaced by Benchmark::Args() and Benchmark::Ranges().
2016-08-04 12:30:14 -07:00
Eric Fiselier
44128d87d2 Add --benchmark_out=<filename> and --benchmark_out_format=<format> options.
These options allow you to write the output of a benchmark to the specified
file and with the specified format. The goal of this change is to help support
tooling.
2016-08-02 15:12:43 -06:00
Eric Fiselier
950c8b7440 Fix suprious failures in complexity_test.cc 2016-07-22 17:31:05 -06:00
Eric Fiselier
440df36e7a Improve failure mode in complexity_test.cc 2016-07-22 16:18:34 -06:00
Ismael
3fdd76bd14 fix issue 235 (#236) 2016-06-03 09:33:17 -07:00
Ismael
8ba94b4c18 changed global string to const char * 2016-06-02 22:40:21 +02:00
Ismael
240ba4e64e changed BigOFunc argument from size_t to int 2016-06-02 22:21:52 +02:00
Ismael
109f528a40 removed functional library not needed 2016-06-02 19:48:53 +02:00
Ismael
212cfe1c2e removed check on automatic fit, to avoid random convergence misfits breaking the build 2016-06-02 19:01:10 +02:00
Ismael
867f9145a0 added lambdas to complexity report 2016-06-01 23:08:01 +02:00
Ismael
290ac9ee0e updated complexity_test.cc to new interface for auto 2016-05-25 23:19:32 +02:00
Ismael
e246699f25 added auto as default value for complexity 2016-05-25 21:18:56 +02:00
Eric Fiselier
1080b17bf5 Fix build error with libc++ 2016-05-24 15:09:31 -06:00
Dominic Hamon
2440b752fd Formatting updates 2016-05-24 13:26:32 -07:00
Ismael
36a9ae197f added SetComplexityN 2016-05-24 19:56:49 +02:00
Ismael
43ef17441c refactor names 2016-05-23 20:50:35 +02:00
Ismael
ac05c04533 refactor MinimalLEastSq 2016-05-23 20:12:54 +02:00
Ismael
290bd60289 Refactor for pull request 2016-05-21 11:51:42 +02:00
Ismael
2e5c397b48 implemented complexity reporting 2016-05-21 08:55:43 +02:00
Ismael
872ff01a49 addaptation of minimal_leastsq library 2016-05-20 16:49:39 +02:00
Ismael
b73dc22944 implemented Complexity for O(1) 2016-05-18 21:25:00 +02:00
Ismael
27f0baa190 Added test file and Complexity() interface 2016-05-18 19:59:34 +02:00