aboutsummaryrefslogtreecommitdiffstats
path: root/benchmarks
Commit message (Collapse)AuthorAgeFilesLines
* Add malloc benchmarks.Christopher Ferris2019-04-092-13/+109
| | | | | | | | | | | | | | | | | Adding some benchmarks that keep a certain number of allocation around. This benchmark should not be used as an absolute for determining what is a good/bad native allocator. However, it should be used to make sure that numbers are not completely changed between allocator versions. Also update the malloc sql benchmark to match the same style as these new benchmarks. Bug: 129743239 Test: Ran these benchmarks. Change-Id: I1995d98fd269b61d9c96efed6eff3ed278e24c97 Merged-In: I1995d98fd269b61d9c96efed6eff3ed278e24c97 (cherry picked from commit 7ec2c8a9b6f9a050d2ac9e0c35f0a631573f3de6)
* Modernise code to use override specifierYi Kong2019-03-291-2/+2
| | | | | | | Generated by clang-tidy. Test: m checkbuild Change-Id: I8e23da6b8af31b291be2eefe9937ca222ea8a8c3
* Fix/suppress bionic google-explicit-constructor warningsChih-Hung Hsieh2019-01-021-1/+1
| | | | | | | | * Add explicit to conversion constructors/operators Bug: 28341362 Test: make with WITH_TIDY=1 DEFAULT_GLOBAL_TIDY_CHECKS=-*,google-explicit-constructor Change-Id: Id1ad0327c1b8c6f094bcbb3ae599bc1f716b3f2f
* switch to using android-base/file.h instead of android-base/test_utils.hMark Salyzyn2018-11-142-2/+2
| | | | | | Test: compile Bug: 119313545 Change-Id: I664fb32522d01909c603d7b903475c4e9aea9223
* Fix test failures.Christopher Ferris2018-11-071-2/+3
| | | | | | | | - Fix the help output for new benchmarks help output. - Fix incorrect regex for sanitizing output. Test: Ran unit tests and they pass. Change-Id: I227eef3ce8c4ce639321e5ab8a57d0877063ede1
* Make the test less specific.Christopher Ferris2018-10-192-435/+44
| | | | | | | | | | | | | Remove the need to add every benchmark to the list of all benchmarks. Also, add some hard-coding of the location of the benchmark executable. Add a test to make sure the benchmark exists so it's possible to detect if the executable changes location. Finally, make the tests isolated so that they finish in half the time. Test: Ran unit tests. Change-Id: I1e59eb283e31d29b14e54c44ac865827c9704127
* Add benchmarks for heap size retrievalHans Boehm2018-10-183-3/+102
| | | | | | | | | | | | | | Add benchmarks for mallinfo, and for retrieving RSS from /proc/self/statm, since we're considering using these for GC triggering. Add some static linkage specifiers, after running into a build problem due to a spurious conflict. Bug: 111447610 Test: Ran benchmarks Change-Id: Ie50d512294993882728c63ce51ec507590257d80
* Merge "Only use NDK libraries in the benchmarks."Elliott Hughes2018-09-251-1/+3
|\
| * Only use NDK libraries in the benchmarks.Elliott Hughes2018-09-241-1/+3
| | | | | | | | | | | | | | | | | | It should be possible to run the benchmarks on any device, including past and future ones, and sticking to NDK libraries ensures that. Bug: N/A Test: `readelf -aW` Change-Id: I15a7a4104fa30263136bc3033d2bd9022cd8ff7b
* | Touch the memory when doing malloc/free benchmark.Christopher Ferris2018-09-201-13/+20
|/ | | | | | | Also, update the benchmark loop for modern C++. Test: Ran benchmarks. Change-Id: I925446b893793eb8c2c6759716cdd3dbbcf1e7c1
* Merge "benchmarks: Fix the benchmark tests."Peter Collingbourne2018-09-141-0/+9
|\
| * benchmarks: Fix the benchmark tests.Peter Collingbourne2018-09-131-0/+9
| | | | | | | | | | Update the list of benchmarks to include the recently added strncmp benchmarks.
* | benchmarks: Update the documentation.Peter Collingbourne2018-09-131-2/+2
|/ | | | | Update the locations of the benchmark binaries to match where they are currently installed.
* Add benchmark for strncmpHaibo Huang2018-08-211-0/+19
| | | | | Test: run benchmark Change-Id: Id99d81fe4d2a72a7f22414c7eea3ef3d873022ab
* Add new malloc benchmarks.Christopher Ferris2018-08-144-0/+535642
| | | | | | | | | | | | | | | | This runs through the trace of the allocations in a sql benchmark app executed in the benchmark thread. Add one benchmark with decay time set to 0 and another with decay time set to 1. Include a script that can generate a header file that can be used to regenerate the data. Bug: 112317428 Test: Builds, ran unit tests, ran benchmarks. Change-Id: I62e287cc06b74b74bcc5a4bbee71b0fac0a196fd
* Fix benchmark-testsHaibo Huang2018-08-117-6/+150
| | | | | | | | | 1. fix all_benchmarks. Some new benchmarks were added. 2. move some benchmark suites to the right place. 3. add unit test for https://android-review.googlesource.com/c/platform/bionic/+/724785 Test: compile and run bionic-benchmarks-tests on device. Change-Id: I2b686b51910a422b664f9ea968199f37944039c0
* Add new strcmp/strncmp benchmarkAdhemerval Zanella2018-08-112-0/+40
| | | | | | | | | This patch adds a new strcmp/strcmp benchmark with different set of inputs. It cover all pre-defined range values (small, medium, large) for aligned inputs and also small range for unaligned ones. Test: Ran new string test suite with a single bionic iteration. Change-Id: Ice78d74c3583a33158eaba3309c10df54044aa28
* Add new memcmp benchmarkAdhemerval Zanella2018-08-111-0/+24
| | | | | | | | | This patch adds a new memcmp benchmark with different set of inputs. It covers all pre-defined range values (small, medium, large) for aligned inputs and also medium range for unaligned ones. Test: Ran new string test suite with a single bionic iteration. Change-Id: Icdb95220a62d46bd71fa6ffbbf4567a9a05b7685
* Add option to define ranges sets for benchmarksAdhemerval Zanella2018-08-111-17/+61
| | | | | | | | | | | | | | | This patch add an option to use the pre-define set of ranges along with macros AT_ONEBUF_MANUAL_ALIGN_* and AT_TWOBUF_MANUAL_ALIGN1_*. The size argument can be either a number or a string representing the sets of values: * SMALL for values between 1 and 256. * MEDIUM for values between 512 and 128KB. * LARGE for values between 256KB and 2048KB. Test: Ran new string test suite with a single bionic iteration. Change-Id: Ieda81ee9a5019991b0b2f97d4ca3a237127c5848
* Add pow benchmarkAdhemerval Zanella2018-08-081-0/+25
| | | | | | | | | | As for exp/exp2 benchmark, this patch add two benchmark for pow: one which measures thoughput and one which measures latency. The input data is the same as powf. Test: ran 32-bit and 64-bit x86 tests on host Change-Id: I04335fac9e76fb3f39935323dacf6b7be6a6f917
* Add log and log2 benchmarkAdhemerval Zanella2018-08-081-0/+47
| | | | | | | | | | | | Similar to exp/exp2, this patch add two benchmarks for log and log2: one which measures thoughput and one which measures latency. The input data is based on logf/log2f one (reduced trace based on 2.8 billion samples extracted from specpu2017 521.wrf_r benchmark). Test: ran 32-bit and 64-bit x86 tests on host Change-Id: I51a9e2960e45d5619585e685eaa7634cc7be901b
* Add exp and exp2 benchmarkAdhemerval Zanella2018-08-081-0/+50
| | | | | | | | | | | | This patch add two benchmarks for both exp and exp2, one which measures thoughput and one which measures latency. The latency benchmark works by creating a dependency on the previous iteration and with a zero multiply to avoid changing the input value. The input is based on expf/exp2f benchmark (reduced trace based on 2.4 billion samples extracted from specpu2017 521.wrf_r benchmark). Test: ran 32-bit and 64-bit x86 tests on host
* Modernize codebase by replacing NULL with nullptrYi Kong2018-08-026-28/+28
| | | | | | | | Fixes -Wzero-as-null-pointer-constant warning. Test: m Bug: 68236239 Change-Id: I5b4123bc6709641315120a191e36cc57541349b2
* Change args to int64_tHaibo Huang2018-07-071-19/+21
| | | | | | | | | | | | | The new benchmark framework uses int64_t for args. Related benchmark change: https://github.com/google/benchmark/commit/9913418d323e64a0111ca0da81388260c2bbe1e9#diff-b9f55422dc0bd52759c6aaa25c305bb0R757 Upgrade benchmark framework: https://android-review.googlesource.com/c/platform/external/google-benchmark/+/714118 Test: compile and run bionic benchmark Change-Id: I1b81c853c28abbead1816bf0be7a20a35e036619
* Add sinf/cosf/sincosf benchmarkAdhemerval Zanella2018-06-193-1/+4252
| | | | | | | | | | | | | | | | | | | | Similar to expf/exp2f, this patch add two benchmarks for sinf, cosf, and sincosf: one which measures thoughput as default and one which measures latency. The input in 512 random value divided in 8 ranges: 1. 0.0 <= x < 0.1 2. 0.1 <= x < 0.7 3. 0.7 <= x < 3.1 4. -3.1 <= x < 3.1 5. 3.3 <= x < 33.3 6. 100.0 <= x < 1000.0 7. 1e6 <= x < 1e32 8. 1e32 < x < FLT_MAX Test: ran 32-bit and 64-bit x86 tests on host Change-Id: I92bc2f1fac911c573c5122911d08ca590311578a
* Add logf and log2f benchmarkAdhemerval Zanella2018-06-192-0/+2962
| | | | | | | | | | | Similar to expf/exp2f, this patch add two benchmarks for logf and log2f: one which measures thoughput and one which measures latency. The input data is based on a reduced trace based on 2.8 billion samples extracted from specpu2017 521.wrf_r benchmark. Test: ran 32-bit and 64-bit x86 tests on host Change-Id: If4fbd7eb3d40f8e155935149a82f162b222d5506
* Add powf benchmarkAdhemerval Zanella2018-06-192-0/+2242
| | | | | | | | | | | As for expf/exp2f benchmark, this patch add two benchmark for powf: one which measures thoughput and one which measures latency. The input data is based on a reduced trace from 2.3 billion samples extracted from specpu2017 521.wrf_r benchmark. Test: ran 32-bit and 64-bit x86 tests on host Change-Id: Id8943d90dd5452146e55fb75708daaf7bf0e25fa
* Add expf and exp2f benchmarkAdhemerval Zanella2018-06-192-1/+2465
| | | | | | | | | | | | | This patch add two benchmarks for both expf and exp2f, one which measures thoughput, as default, and one which measures latency. The latency benchmark works by creating a dependency on the previous iteration and with a zero multiply to avoid changing the input value. The input is based on a reduced trace based on 2.4 billion samples extracted from specpu2017 521.wrf_r benchmark. Test: ran 32-bit and 64-bit x86 tests on host Change-Id: Ic0d40cc4977dd6875fb7431146fc38ea0e6e0bc2
* Switch to FreeBSD's actual sincos.Elliott Hughes2018-05-091-0/+10
| | | | | | | | | | | | | | Before: BM_math_sin_fast 48 ns 48 ns 14693053 BM_math_sincos 61 ns 61 ns 11470219 After: BM_math_sin_fast 48 ns 48 ns 14725120 BM_math_sincos 43 ns 43 ns 16329843 Bug: N/A Test: ran tests, benchmarks Change-Id: I8693c64135233c0641af5302c38748f47ac76737
* Fix bug in --bionic_cpu option handling.Christopher Ferris2018-05-044-40/+18
| | | | | | | | | | | | | | | | | | Make sure that all the variables are properly initialized. Remove the code that verifies the core to enable using get_schedaffinity since that make it impossible to change the cpu for different tests. Change the cpu_to_lock to an int, it really didn't need to be a long. Fix a few missing tests. Test: Ran unit tests. Test: Built the tests and ran on different cpus, verifying that the Test: chosen cpu was correct. Test: Created an xml file that had different cpus for different tests Test: and verified that it locked to each cpu properly. Change-Id: Ie7b4ad8f306f13d6e968d118e71bb5dc0221552a
* Remove non-trivial constructors/destructors from SystemPropertiesTom Cherry2018-02-211-1/+1
| | | | | | | | | | | With the goal of disallowing exit time destructors, SystemProperties's non-trivial destructor needs to be removed. This means replacing the union hack with yet another hack as we don't want to allocate anything despite relying on some polymorphism. Bug: 73485611 Test: boot bullhead Change-Id: I64223714c9b26c9724bfb8f3e2b0168e47b56bc8
* Switch the rest of our internal headers to #pragma once.Elliott Hughes2018-02-131-4/+1
| | | | | | | | We've been using #pragma once for new internal files, but let's be more bold. Bug: N/A Test: builds Change-Id: I7e2ee2730043bd884f9571cdbd8b524043030c07
* Run bpfmt manually.Elliott Hughes2018-02-051-2/+5
| | | | | | Bug: N/A Test: builds Change-Id: I0cf145c3b699ac8ef170a63366832f63a9cc1a91
* Support priority inheritance mutex in 32-bit programs.Yabin Cui2018-02-011-2/+0
| | | | | | | | | | | Add fast path calling PIMutexTryLock() in pthread_mutex_lock. Add trace for pi mutex waiting. Bug: http://b/29177606 Test: run bionic-unit-tests. Test: run bionic-benchmarks. Change-Id: I30b6436692d5ea6b63ca9905df745edb843b5528
* Support priority inheritance mutex in 64bit programs.Yabin Cui2018-01-241-0/+51
| | | | | | | Bug: http://b/29177606 Test: run bionic-unit-tests on walleye. Test: run bionic-unit-tests-glibc on host. Change-Id: Iac349284aa73515f384e7509445f87434757f59e
* Address a bunch of clang-tidy complaints.Elliott Hughes2018-01-193-7/+7
| | | | | | | | | There were a bunch more unreasonable/incorrect ones, but these ones seemed legit. Nothing very interesting, though. Bug: N/A Test: ran tests, benchmarks Change-Id: If66971194d4a7b4bf6d0251bedb88e8cdc88a76f
* Remove workaround for running property tests.Christopher Ferris2018-01-082-47/+40
| | | | | | | | | Also fix the tests for some missing benchmarks that have been added recently. Test: Ran bionic benchmarks tests and all pass. Test: Ran bionic benchmarks to verify that there are no crashes. Change-Id: I8501553e8a229c0c6ea81e894e91ac2f5f2fe26c
* Merge "More benchmarks."Elliott Hughes2017-12-194-0/+147
|\
| * More benchmarks.Elliott Hughes2017-12-194-0/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a hand-rolled maps line parser as something to compare our realistic sscanf benchmark against. Also add benchmarks for the ato*/strto* family. This patch doesn't fix the tests, which seem to have been broken by the recent google-benchmark upgrade despite the benchmarks themselves all working just fine. To me that's a final strike against these tests which are hard to maintain and not obviously useful, but we can worry about what to do with them -- whether to just delete them or to try to turn them into tests that actually have some value -- in a separate CL. Bug: N/A Test: ran benchmarks Change-Id: I6c9a77ece98d624baeb049b360876ef5c35ea7f2
* | Split properties into their own class to make testing betterTom Cherry2017-12-182-32/+30
|/ | | | | | | | | | | | | Reinitializing system properties can result in crashes later in the program, and is generally not recommended or even supported. This change moves the actual logic for system properties into a class that can be tested in isolation, without reinitializing the actual system property area used in libc. Bug: 62197783 Test: boot devices, ensure properties work Test: system property unit tests and benchmarks Change-Id: I9ae6e1b56c62f51a4d3fdb5b62b8926cef545649
* Trivial scanf benchmarks.Elliott Hughes2017-12-112-0/+34
| | | | | | Bug: http://b/68672236 Test: ran benchmarks Change-Id: I96514be5e67969b65205e953051c524be3626ec4
* bionic: benchmark: add clock_getres performance testsMark Salyzyn2017-12-073-0/+91
| | | | | | | | | | | | | Provide a means to check vdso kernel performance for all reasoned combinations of clock_getres, same set of ids as clock_gettime. Add to suites/vdso.xml Test: /data/nativetest{64}/bionic-benchmarks-tests/bionic-benchmarks-tests /data/benchmarktest{64}/bionic-benchmarks/bionic-benchmarks \ --bionic_xml=vdso.xml --benchmark_filter=BM_time_clock_getres* Bug: 63737556 Change-Id: I11ea200f67aec2a2f6ad9284960f2941298da222
* bionic: benchmark: additional clock_gettime performance testsMark Salyzyn2017-12-073-0/+82
| | | | | | | | | | | | | | | | Provide a means to check vdso kernel performance for each of CLOCK_MONOTONIC (current), CLOCK_MONOTONIC_COARSE, CLOCK_MONOTONIC_RAW, CLOCK_REALTIME, CLOCK_REALTIME_COARSE, CLOCK_BOOTTIME. Add a suites/vdso.xml to select subset of tests impacted by vdso implementations. Test: /data/nativetest{64}/bionic-benchmarks-tests/bionic-benchmarks-tests /data/benchmarktest{64}/bionic-benchmarks/bionic-benchmarks \ --bionic_xml=vdso.xml --benchmark_filter=BM_time_clock_gettime* Bug: 63737556 Change-Id: Ibc48e838e50929527ce8d221dd1a608bf185cbc2
* Add new benchmark options.Christopher Ferris2017-11-3010-181/+2959
| | | | | | | | | | | | | | | | | Add a bunch of extra options to allow greater flexibility for creating benchmarks. Add a pattern option that can be used to represent any one buffer or two buffer possibility. This should fully replace the functionality of microbench. Add a single option for one buffer benchmarks and two buffer benchmarks that represents all of the possible options to run a string benchmark. Add a string test suite that includes all string benchmarks using the above option. Test: New unit tests to cover all the new options, and all pass. Test: Ran new string test suite with a single bionic iteration. Change-Id: Idb13ea15e44cec626e9f46672ccd648d7ca72ba6
* Generate all the benchmarks to run.Christopher Ferris2017-11-3015-821/+243
| | | | | | | | | | | | | | | | | Instead of requiring the need to maintain a list of all the benchmarks, add a programmatic way to generate all of the benchmarks. This generation runs the benchmarks in alphabetical order. Add a new macro BIONIC_BENCHMARK_WITH_ARG that will be the default argument to pass to the benchmark. Change the benchmarks that require default arguments. Add a small example xml file, and remove the full.xml/host.xml files. Update readme. Test: Ran new unit tests, verified all tests are added. Change-Id: I8036daeae7635393222a7a92d18f34119adba745
* Fix bionic benchmark unit tests.Christopher Ferris2017-11-071-1/+6
| | | | | Test: Ran unit tests. Change-Id: I729572b101c7011cde5e7da4a72af7ede719b76b
* 10x printf speedup.Elliott Hughes2017-11-032-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Android is UTF-8. Don't make everyone pay to convert UTF-8 to ASCII just so we can recognize '%'. With UTF-8 we can just strchr forwards. Before: --------------------------------------------------------------- Benchmark Time CPU Iterations --------------------------------------------------------------- BM_stdio_printf_literal 1290 ns 1290 ns 442554 BM_stdio_printf_s 1204 ns 1204 ns 582446 BM_stdio_printf_d 1206 ns 1206 ns 578311 BM_stdio_printf_1$s 2263 ns 2263 ns 310002 After: --------------------------------------------------------------- Benchmark Time CPU Iterations --------------------------------------------------------------- BM_stdio_printf_literal 178 ns 178 ns 3394001 BM_stdio_printf_s 246 ns 246 ns 2850284 BM_stdio_printf_d 252 ns 252 ns 2778610 BM_stdio_printf_1$s 363 ns 363 ns 1929011 Add missing __find_arguments error checking to the wide variant to match the regular one. Also replace various char/wchar_t differences with the macro. Bug: http://b/67371539 Test: ran tests Change-Id: I18f122009c22699943ab5d666a98ea594a972c40
* Add basic printf benchmarks.Elliott Hughes2017-10-262-0/+34
| | | | | | Bug: http://b/67371539 Test: ran benchmarks Change-Id: I6ad05540079776b2df4cc8d9c02440c61e42037d
* Fix pthread benchmarks.Josh Gao2017-10-241-9/+3
| | | | | | | | | | | | | | PauseTiming and ResumeTiming are thread-local, and unbalanced calls to them leads to obviously bogus results like: Benchmark Time CPU Iterations ----------------------------------------------------------------- BM_pthread_exit_and_join 212600 ns 59981418 ns 12 BM_pthread_create_and_run 212997341 ns -1569132344 ns 1000 Bug: http://b/68170209 Test: ran bionic benchmarks Change-Id: Ia88cd6af9ff524443850d834a96cf5dd9c7f3ed9
* Remove some legacy declarations from <math.h>.Elliott Hughes2017-10-191-10/+3
| | | | | | | | | | | | | These are still needed for backwards compatibility with code built by old versions of the NDK, but we don't need to pollute the headers with them. Also lose the hand-written code for these. The compiler-generated code is either the same or better, and no new code is calling these functions anyway. Bug: N/A Test: ran tests Change-Id: Ib01ad9805034433e0105aec882608cc8e6526f78