This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
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
}
}
}
Attachment:
0001-Add-bench-math-inlines.txt
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |