summaryrefslogtreecommitdiffstats
path: root/benchmarks
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Revert "Use compiler builtins for fabs.""Elliott Hughes2015-11-071-0/+26
| | | | | | | | | Don't enable the inlines when building libm itself. Otherwise clang gets upset by seeing both an inline and a non-inline definition. This reverts commit c5deb0f883cbdca7e5ab75f92f82c31d21367f49. Change-Id: If7abdb351f5a5549d6a331b33af408e8fcfa9868
* Use __builtin_* in <math.h>.Elliott Hughes2015-11-071-0/+124
| | | | | | | | Also remove cruft meant to support long-obsolete compilers. More benchmarks. Bug: http://b/23195789 Change-Id: Ief538e41e77a77e8013b2f4f359584e8df2c47d8
* Change name of rwlock benchmark.Yabin Cui2015-03-171-4/+4
| | | | | | rw_lock is not easy for me to remember, so I prefer changing it to rwlock. Change-Id: I0784acaca0c3b46c28184a77eb29ffe696f9ea07
* Revert "Revert "Moving StringPrintf to libbase.""Dan Albert2015-03-162-6/+6
| | | | This reverts commit d2dad2b24fb82604f9dbe7a082e630a524f1473d.
* Revert "Moving StringPrintf to libbase."Nicolas Geoffray2015-03-162-6/+6
| | | | | | | | libbase has been reverted This reverts commit 7ed5fa1e4d37722a644518594bf2b0e1529c05e9. Change-Id: I5d8ff8c38ff8c9123e6cee5dc15a101a79e94b2e
* Moving StringPrintf to libbase.Dan Albert2015-03-132-6/+6
| | | | Change-Id: I47ef28bb294ffb7c7c065c5624417edf23503b77
* Allow wildcards to match arg values.Christopher Ferris2015-02-253-31/+51
| | | | Change-Id: I38230b500bb8f8f69af0d7c740855a401cd12898
* Fix 64-bit benchmark buildGreg Hackmann2015-02-202-9/+9
| | | | | | | | | | | | | The * flag to printf() wants an int instead of size_t, and these are distinct types on 64-bit. To accomodate this, make the name column width helpers return int. In theory this truncates things, but in practice this only matters if you have a benchmark with more than INT_MAX characters in its name (in which case you have bigger problems). Change-Id: I3338948c25a3a8d84f1ead2f5b457c05da8a01cf Signed-off-by: Greg Hackmann <ghackmann@google.com>
* Refactor the benchmark code.Christopher Ferris2015-02-1916-815/+806
| | | | | | | | | | | | | | | | | | | | | | | | | | | Changes: - Modify the benchmarks to derive from a single Benchmark object. - Rewrite the main iteration code. This includes changing the iteration code to use the actual total time calculated by the benchmark as a basis for determining whether there are enough iterations instead of using the time it takes to run the benchmark. - Allow benchmarks to take no argument, int, or double. - Fix the PrettyInt printer for negative integers. - Modify the max column width name to include the whole name including the arg part. - Reformat property_benchmark.cpp in line with the rest of the code. - Modify a few of the math benchmarks to take an argument instead of separate benchmarks for the same function with different args. - Create a vector of regex_t structs to represent the args all at once instead of when running each benchmark. This change is in preparation for adding new math based benchmarks. Tested by running on a nexus flo running at max using the new code and the old code and comparing. All of the numbers are similar, but some of the iterations are different due to the slightly different algorithm used. Change-Id: I57ad1f3ff083282b9ffeb72e687cab369ce3523a
* bionic: benchmarks: Add BM_semaphore_sem_post_sem_waitMark Salyzyn2015-02-121-0/+98
| | | | | | | This test reports the overhead of sem_post to sem_wake for a low thread count and a high thread count. Change-Id: Ic30dcc8a78d754979117446bf3a28b7575cabac7
* bionic: benchmarks: Add BM_semaphore_sem_postMark Salyzyn2015-02-091-0/+94
| | | | | | | | | | This test tries its best to report the producer side underlying futex wake syscall overhead wthin sem_post. It does not measure the time it takes for the wakeup to propagate to the consumer. It suffers from clock_gettime syscall overhead, so subtract that. Lock the CPU speed for consistent results as we may not reach >50% cpu utilization. Change-Id: I02fa9dab2e6ac27202f0290115150bd3c8de00f2
* Do not build host benchmark code on macs.Christopher Ferris2015-01-261-0/+10
| | | | | | | Macs don't have clock_gettime, and it doesn't seem worth getting this to run on the host for mac. Change-Id: I59d9939acc2ede1308b24a60c4242d45355d967d
* Remove obsolete BUILD_TINY_ANDROID.Elliott Hughes2015-01-241-4/+0
| | | | Change-Id: If2fc97134340fd09ec2583b666ace2f673cbdf66
* Implement __fsetlocking.Elliott Hughes2015-01-211-2/+14
| | | | | | | | | | | | The old __isthreaded hack was never very useful on Android because all user code runs in a VM where there are lots of threads running. But __fsetlocking lets a caller say "I'll worry about the locking for this FILE*", which is useful for the normal case where you don't share a FILE* between threads so you don't need any locking. Bug: 17154740 Bug: 18593728 Change-Id: I2a8dddc29d3edff39a3d7d793387f2253608a68d
* Add a benchmark for using stdio to read a file in /proc.Elliott Hughes2015-01-161-0/+10
| | | | Change-Id: I12517aae19e36b7c022a11e8807aece61bb0cb9c
* Use SI prefixes throughout the benchmark output.Elliott Hughes2015-01-161-12/+45
| | | | | | | | Also switch throughput to GiB/s. I did play with using the new code, but having consistent units for all results seemed easier to use anyway (and doesn't require extra code). Change-Id: I466fd573373bd05619e6f6e6d3dedd7dae0d9362
* Use a vector of benchmarks and new for loop syntax.Elliott Hughes2015-01-151-11/+9
| | | | Change-Id: Ib1f1250e7786770083ed6a478677a893b2075a93
* bionic benchmarks: limit benchmark run time to 1s real timeColin Cross2015-01-151-4/+8
| | | | | | | | | | | | | | | The benchmark run loop tries to run until 1s of time has been accumulated between StartBenchmarkTiming() and StopBenchmarkTiming(). If a majority of the time is spent stopped this can lead to benchmarks running for very long periods of time. This can easily happen when benchmarking something that requires initialization or cleanup on each iteration. Modify the loop to run for 1s of real time instead of 1s of benchmark time. For existing benchmarks this shouldn't make much of a difference. Change-Id: Iaba8a13b4dfc4a5e2cd9992041c9173ea556f9cc
* bionic benchmarks: export benchmark libraryColin Cross2015-01-153-14/+40
| | | | | | Export libbenchmark for external projects to write benchmarks against. Change-Id: I3b04a56a62ce517afc0d5e06dc8d28879ada3d30
* Use mmap to create the pthread_internal_tYabin Cui2014-12-191-0/+92
| | | | | | | | | Add name to mmaped regions. Add pthread benchmark code. Allocate pthread_internal_t on regular stack. Bug: 16847284 Change-Id: Id60835163bb0d68092241f1a118015b5a8f85069
* Extract bionic-prepare-run-on-host to inc file.Dmitriy Ivanov2014-12-021-17/+13
| | | | | | Make benchmark run-on-host depend on bionic-prepare-run-on-host. Change-Id: I0bdbf561b2580d607a49b7c83cc273320ac55429
* Build our benchmarks against glibc too.Elliott Hughes2014-12-015-5/+31
| | | | | Bug: 18556607 Change-Id: I455ac8b93c0835836180e549486bc52d393ee6a6
* Merge "Benchmark fread/fwrite both buffered and unbuffered."Elliott Hughes2014-12-011-15/+21
|\
| * Benchmark fread/fwrite both buffered and unbuffered.Elliott Hughes2014-12-011-15/+21
| | | | | | | | | | Bug: 18556607 Change-Id: I53905aedcea75fe550d9c423fb701c2c9bf8e831
* | Fix running the bionic benchmarks on the host.Elliott Hughes2014-12-011-5/+5
|/ | | | | Bug: 18556607 Change-Id: I4e75bfcde788b43e1926be1b0146acf09b496390
* Switch benchmarks and tests to libc++.Dan Albert2014-09-301-2/+1
| | | | Change-Id: I3b9c8f8c14a1e227e67ae1977cc29b0e8fccef5d
* Prevent benchmarks from being optimized away.Dan Albert2014-09-251-2/+2
| | | | Change-Id: I2d27b39ecdfc50e78098314567c295a2f113f8d3
* Add benchmarks for pthread_rw_locksCalin Juravle2014-09-161-0/+32
| | | | | | | | Benchmarks for the following sequences: 1) pthread_rwlock_rdlock -> pthread_rwlock_unlock 2) pthread_rwlock_wrlock -> pthread_rwlock_unlock Change-Id: I8d87d4d8afab8637ea7ff5d23a0b3a81d6d40835
* Start hiding "private/bionic_time.h".Elliott Hughes2014-07-251-20/+0
| | | | | Bug: 15765976 Change-Id: Ibd9cf07067ec8dffe9fda6c3d498d4ab90708220
* Use VDSO for clock_gettime(2) and gettimeofday(2).Elliott Hughes2014-07-162-2/+50
| | | | | Bug: 15387103 Change-Id: Ifc3608ea65060c1dc38120b10b6e79874f182a36
* Make sure not to construct illegal property names.Christopher Ferris2014-07-151-6/+28
| | | | Change-Id: I37624e69aec51efd4291f076fb87af3f35d33025
* Added a __system_property_serial benchmark.Brigid Smith2014-07-091-0/+26
| | | | Change-Id: Ifc2116f26acb242f4dcdb6eefe128899a9dc63bb
* Added __system_propery_read benchmark.Brigid Smith2014-07-091-0/+27
| | | | Change-Id: Ic0e9118859a013aa04841de25822a81a7fc74b3c
* Cache getpid.Elliott Hughes2014-06-201-0/+11
| | | | | | | | | | | | | | | | | In practice, with this implementation we never need to make a system call. We get the main thread's tid (which is the same as our pid) back from the set_tid_address system call we have to make during initialization. A new pthread will have the same pid as its parent, and a fork child's main (and only) thread will have a pid equal to its tid, which we get for free from the kernel before clone returns. The only time we'd actually have to make a getpid system call now is if we take a signal during fork and the signal handler calls getpid. (That, or we call getpid in the dynamic linker while it's still dealing with its own relocations and hasn't even set up the main thread yet.) Bug: 15387103 Change-Id: I6d4718ed0a5c912fc75b5f738c49a023dbed5189
* Fix GCC 4.9 complaint about int/size_t mismatch.Elliott Hughes2014-06-121-2/+3
| | | | Change-Id: Ib13857f98658dc8760cff15adb5829e8e140008a
* Size the benchmark name column appropriately.Elliott Hughes2014-06-111-2/+7
| | | | | | Nobody likes misaligned output. Change-Id: Ifbfd7beec755e91e204426a96c054d4ea20d3fae
* Add __pure2 to a few more functions, most notably gettid and pthread_self.Elliott Hughes2014-06-112-2/+8
| | | | Change-Id: I7eee9f26f45130038af09d8285782b07f70a996f
* Add a couple more system call benchmarks.Elliott Hughes2014-06-092-0/+25
| | | | | Bug: 15387103 Change-Id: I13419ddf77d201fdbde4c784259c0cb0dcfb9a77
* AArch64: libm: Fix ARM64 fenv_t and refactor ARM64 libm implementation.Serban Constantinescu2014-06-091-0/+40
| | | | | | | | | | | | | | | | This patch fixes the ARM64 ABI for libm. fenv_t is now split in 32bit status and 32bit control. This mirrors the AArch64 FPU control and status registers (FPCR, FPSR). The patch also refactors the libm implementation for ARM64 into a finer grained control over the FPU registers. Bionic-benchmarks has been expanded with 3 more benchmarks for floating point operations. The new libm implementation for ARM64 performs better over all the math benchmarks available. Change-Id: I2a7f81d6b4e55c91f8a63a4c69614fc8b1bcf2db Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
* Turn on -Wunused and fix the mistakes it uncovers.Elliott Hughes2014-06-031-1/+1
| | | | Change-Id: I023d2d8b547fbc21d4124bb7510d42b06a0dc501
* Avoid a system call in 'gettid'.Elliott Hughes2014-06-021-0/+11
| | | | | | | | | | | | | System calls can be pretty slow. This is mako, which has one of our lowest latencies: iterations ns/op BM_unistd_getpid 10000000 209 BM_unistd_gettid 200000000 8 Bug: 15297299 (kernel panic from too many gettid calls) Bug: 15315766 (excessive gettid overhead in liblogd) Change-Id: I49656c0fc5b5d092390264a59e4f2c0d8a8b1aeb
* Revert "Removes bionic's dependence on stlport"Dan Albert2014-05-191-1/+2
| | | | | | This reverts commit 4d35da1df8b74c1965b2201f6089e7d7bb352def. Change-Id: Ie9a2620441edb55dbc5949e13a4b913ea4e66797
* Removes bionic's dependence on stlportDan Albert2014-05-191-2/+1
| | | | | | Only affects tests/benchmarks. Confirmed passing on arm. Change-Id: If158e23e8cd06e7597ef6f3c9376f6799b467e62
* Switch to g_ for globals.Elliott Hughes2014-05-141-26/+26
| | | | | | | That's what the Google style guide recommends, and we're starting to get a mix. Change-Id: Ib0c53a890bb5deed5c679e887541a715faea91fc
* Add ability to run on host for x86/x86_64.Christopher Ferris2014-05-011-0/+23
| | | | Change-Id: I063cb71ce0f7247cefacaa653c7b87b7b3e72025
* Modify hard-coded directory.Christopher Ferris2014-05-011-2/+12
| | | | | | | Use the ANDROID_DATA environment variable instead of the hard-coded directory for these benchmarks. Change-Id: I00bae7b4a24e81e77fc8f52e1fe99f4d4918f520
* Build 32/64 bit versions of tests/benchmarks.Christopher Ferris2014-04-221-0/+3
| | | | Change-Id: I4d146377aac6573a214dfaa5cab5cce8b10538b4
* Reimplement isinf/isnan/fpclassify.Elliott Hughes2014-04-141-0/+109
| | | | | | | | | | | | | | | | Also move isinf and isnan into libc like everyone else. Also move fpclassify to libc like the BSDs (but unlike glibc). We need this to be able to upgrade our float/double/long double parsing to gdtoa. Also add some missing aliases. We now have all of: isnan, __isnan, isnanf, __isnanf, isnanl, __isnanl, isinf, __isinf, isinff, __isinff, isinfl, __isinfl, __fpclassify, __fpclassifyd, __fpclassifyf, __fpclassifyl. Bug: 13469877 Change-Id: I407ffbac06c765a6c5fffda8106c37d7db04f27d
* Add various benchmarks.Elliott Hughes2014-03-115-0/+248
| | | | | | These are based on ones from system/extras/tests/bionic/. Change-Id: I7b1ae15a2ca5d1031a6a511d97b88125c1770047
* AArch64: Add fixes to bionic/testsSerban Constantinescu2013-12-162-2/+5
| | | | | | | This patch adds minor fixes to the bionic unit tests. Change-Id: Ie10f33c631ed6c10987923d678711d22931ddb05 Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>