| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
Also remove cruft meant to support long-obsolete compilers. More
benchmarks.
Bug: http://b/23195789
Change-Id: Ief538e41e77a77e8013b2f4f359584e8df2c47d8
|
|
|
|
|
|
| |
rw_lock is not easy for me to remember, so I prefer changing it to rwlock.
Change-Id: I0784acaca0c3b46c28184a77eb29ffe696f9ea07
|
|
|
|
| |
This reverts commit d2dad2b24fb82604f9dbe7a082e630a524f1473d.
|
|
|
|
|
|
|
|
| |
libbase has been reverted
This reverts commit 7ed5fa1e4d37722a644518594bf2b0e1529c05e9.
Change-Id: I5d8ff8c38ff8c9123e6cee5dc15a101a79e94b2e
|
|
|
|
| |
Change-Id: I47ef28bb294ffb7c7c065c5624417edf23503b77
|
|
|
|
| |
Change-Id: I38230b500bb8f8f69af0d7c740855a401cd12898
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
This test reports the overhead of sem_post to sem_wake for a low thread count
and a high thread count.
Change-Id: Ic30dcc8a78d754979117446bf3a28b7575cabac7
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Macs don't have clock_gettime, and it doesn't seem worth getting this
to run on the host for mac.
Change-Id: I59d9939acc2ede1308b24a60c4242d45355d967d
|
|
|
|
| |
Change-Id: If2fc97134340fd09ec2583b666ace2f673cbdf66
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Change-Id: I12517aae19e36b7c022a11e8807aece61bb0cb9c
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Change-Id: Ib1f1250e7786770083ed6a478677a893b2075a93
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
Export libbenchmark for external projects to write benchmarks against.
Change-Id: I3b04a56a62ce517afc0d5e06dc8d28879ada3d30
|
|
|
|
|
|
|
|
|
| |
Add name to mmaped regions.
Add pthread benchmark code.
Allocate pthread_internal_t on regular stack.
Bug: 16847284
Change-Id: Id60835163bb0d68092241f1a118015b5a8f85069
|
|
|
|
|
|
| |
Make benchmark run-on-host depend on bionic-prepare-run-on-host.
Change-Id: I0bdbf561b2580d607a49b7c83cc273320ac55429
|
|
|
|
|
| |
Bug: 18556607
Change-Id: I455ac8b93c0835836180e549486bc52d393ee6a6
|
|\ |
|
| |
| |
| |
| |
| | |
Bug: 18556607
Change-Id: I53905aedcea75fe550d9c423fb701c2c9bf8e831
|
|/
|
|
|
| |
Bug: 18556607
Change-Id: I4e75bfcde788b43e1926be1b0146acf09b496390
|
|
|
|
| |
Change-Id: I3b9c8f8c14a1e227e67ae1977cc29b0e8fccef5d
|
|
|
|
| |
Change-Id: I2d27b39ecdfc50e78098314567c295a2f113f8d3
|
|
|
|
|
|
|
|
| |
Benchmarks for the following sequences:
1) pthread_rwlock_rdlock -> pthread_rwlock_unlock
2) pthread_rwlock_wrlock -> pthread_rwlock_unlock
Change-Id: I8d87d4d8afab8637ea7ff5d23a0b3a81d6d40835
|
|
|
|
|
| |
Bug: 15765976
Change-Id: Ibd9cf07067ec8dffe9fda6c3d498d4ab90708220
|
|
|
|
|
| |
Bug: 15387103
Change-Id: Ifc3608ea65060c1dc38120b10b6e79874f182a36
|
|
|
|
| |
Change-Id: I37624e69aec51efd4291f076fb87af3f35d33025
|
|
|
|
| |
Change-Id: Ifc2116f26acb242f4dcdb6eefe128899a9dc63bb
|
|
|
|
| |
Change-Id: Ic0e9118859a013aa04841de25822a81a7fc74b3c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Change-Id: Ib13857f98658dc8760cff15adb5829e8e140008a
|
|
|
|
|
|
| |
Nobody likes misaligned output.
Change-Id: Ifbfd7beec755e91e204426a96c054d4ea20d3fae
|
|
|
|
| |
Change-Id: I7eee9f26f45130038af09d8285782b07f70a996f
|
|
|
|
|
| |
Bug: 15387103
Change-Id: I13419ddf77d201fdbde4c784259c0cb0dcfb9a77
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Change-Id: I023d2d8b547fbc21d4124bb7510d42b06a0dc501
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
This reverts commit 4d35da1df8b74c1965b2201f6089e7d7bb352def.
Change-Id: Ie9a2620441edb55dbc5949e13a4b913ea4e66797
|
|
|
|
|
|
| |
Only affects tests/benchmarks. Confirmed passing on arm.
Change-Id: If158e23e8cd06e7597ef6f3c9376f6799b467e62
|
|
|
|
|
|
|
| |
That's what the Google style guide recommends, and we're starting
to get a mix.
Change-Id: Ib0c53a890bb5deed5c679e887541a715faea91fc
|
|
|
|
| |
Change-Id: I063cb71ce0f7247cefacaa653c7b87b7b3e72025
|
|
|
|
|
|
|
| |
Use the ANDROID_DATA environment variable instead of the hard-coded
directory for these benchmarks.
Change-Id: I00bae7b4a24e81e77fc8f52e1fe99f4d4918f520
|
|
|
|
| |
Change-Id: I4d146377aac6573a214dfaa5cab5cce8b10538b4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
These are based on ones from system/extras/tests/bionic/.
Change-Id: I7b1ae15a2ca5d1031a6a511d97b88125c1770047
|
|
|
|
|
|
|
| |
This patch adds minor fixes to the bionic unit tests.
Change-Id: Ie10f33c631ed6c10987923d678711d22931ddb05
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
|