[PATCH v3] Add math-inline benchmark
Wilco Dijkstra
wdijkstr@arm.com
Wed Aug 19 13:42:00 GMT 2015
Ping (correct version of patch attached)
> Wilco Dijkstra wrote:
> Add a benchmark for isinf/isnan/isnormal/isfinite/fpclassify. The test uses 2 arrays with 1024
> doubles, one with 99% finite FP numbers (10% zeroes, 10% negative) and 1% inf/NaN, the other
> with 50% inf, and 50% Nan.
>
> This version removes various tests that caused confusion and only leaves the existing GLIBC
> definitions and inlines for comparison with the GCC builtins. I changed the tests to not
> inline inside the loop and use a branch on the boolean result. The 64-bit immediates used by
> the GLIBC inlines seem very expensive on some microarchitectures, so this shows even more
> clearly that using the built-ins results in a significant performance gain (see x64 results
> below).
>
>
> ChangeLog:
> 2015-07-23 Wilco Dijkstra <wdijkstr@arm.com>
>
> * benchtests/Makefile: Add bench-math-inlines, link with libm.
> * benchtests/bench-math-inlines.c: New benchmark.
> * benchtests/bench-util.h: New file.
> * benchtests/bench-util.c: New file.
> * benchtests/bench-skeleton.c: Add include of bench-util.c/h.
>
>
> "__isnan_t": {
> "normal": {
> "duration": 5.32475e+06,
> "iterations": 500,
> "mean": 10649
> }
> },
> "__isnan_inl_t": {
> "normal": {
> "duration": 2.74296e+06,
> "iterations": 500,
> "mean": 5485
> }
> },
> "__isnan_builtin_t": {
> "normal": {
> "duration": 2.35589e+06,
> "iterations": 500,
> "mean": 4711
> }
> },
> "isnan_t": {
> "normal": {
> "duration": 2.25889e+06,
> "iterations": 500,
> "mean": 4517
> }
> },
> "__isinf_t": {
> "normal": {
> "duration": 5.7671e+06,
> "iterations": 500,
> "mean": 11534
> }
> },
> "__isinf_ns_t": {
> "normal": {
> "duration": 2.70963e+06,
> "iterations": 500,
> "mean": 5419
> }
> },
> "__isinf_ns_builtin_t": {
> "normal": {
> "duration": 2.70841e+06,
> "iterations": 500,
> "mean": 5416
> }
> },
> "__isinf_builtin_t": {
> "normal": {
> "duration": 2.26255e+06,
> "iterations": 500,
> "mean": 4525
> }
> },
> "isinf_t": {
> "normal": {
> "duration": 2.26428e+06,
> "iterations": 500,
> "mean": 4528
> }
> },
> "__finite_t": {
> "normal": {
> "duration": 5.82567e+06,
> "iterations": 500,
> "mean": 11651
> }
> },
> "__finite_inl_t": {
> "normal": {
> "duration": 3.2019e+06,
> "iterations": 500,
> "mean": 6403
> }
> },
> "__isfinite_builtin_t": {
> "normal": {
> "duration": 3.17892e+06,
> "iterations": 500,
> "mean": 6357
> }
> },
> "isfinite_t": {
> "normal": {
> "duration": 2.75324e+06,
> "iterations": 500,
> "mean": 5506
> }
> },
> "__isnormal_inl_t": {
> "normal": {
> "duration": 8.65908e+06,
> "iterations": 500,
> "mean": 17318
> }
> },
> "__isnormal_builtin_t": {
> "normal": {
> "duration": 3.68589e+06,
> "iterations": 500,
> "mean": 7371
> }
> },
> "isnormal_t": {
> "normal": {
> "duration": 3.76085e+06,
> "iterations": 500,
> "mean": 7521
> }
> },
> "__fpclassify_t": {
> "normal": {
> "duration": 6.63574e+06,
> "iterations": 500,
> "mean": 13271
> }
> },
> "__fpclassify_builtin_t": {
> "normal": {
> "duration": 4.48757e+06,
> "iterations": 500,
> "mean": 8975
> }
> },
> "fpclassify_t": {
> "normal": {
> "duration": 4.48033e+06,
> "iterations": 500,
> "mean": 8960
> }
> },
> "remainder_test1_t": {
> "normal": {
> "duration": 2.10051e+07,
> "iterations": 500,
> "mean": 42010
> }
> },
> "remainder_test2_t": {
> "normal": {
> "duration": 1.9933e+07,
> "iterations": 500,
> "mean": 39865
> }
> }
> }
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0002-Add-bench-math-inlines.txt
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20150819/e7ba90a4/attachment.txt>
More information about the Libc-alpha
mailing list