mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 17:53:37 +08:00
3d155d4b6c
The prior unrolling didn't really do much as it left the dependency chain between iterations. Unrolled the loop for 4 so 4x multiplies could be pipelined in out-of-order machines. Results for __nss_hash Benchmarked on Tigerlake: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz Time as Geometric Mean of N=25 runs Geometric of all benchmark New / Old: 0.845 type, length, New Time, Old Time, New Time / Old Time fixed, 0, 4.019, 3.729, 1.078 fixed, 1, 4.95, 5.707, 0.867 fixed, 2, 5.152, 5.657, 0.911 fixed, 3, 4.641, 5.721, 0.811 fixed, 4, 5.551, 5.81, 0.955 fixed, 5, 6.525, 6.552, 0.996 fixed, 6, 6.711, 6.561, 1.023 fixed, 7, 6.715, 6.767, 0.992 fixed, 8, 7.874, 7.915, 0.995 fixed, 9, 8.888, 9.767, 0.91 fixed, 10, 8.959, 9.762, 0.918 fixed, 11, 9.188, 9.987, 0.92 fixed, 12, 9.708, 10.618, 0.914 fixed, 13, 10.393, 11.14, 0.933 fixed, 14, 10.628, 12.097, 0.879 fixed, 15, 10.982, 12.965, 0.847 fixed, 16, 11.851, 14.429, 0.821 fixed, 32, 24.334, 34.414, 0.707 fixed, 64, 55.618, 86.688, 0.642 fixed, 128, 118.261, 224.36, 0.527 fixed, 256, 256.183, 538.629, 0.476 random, 2, 11.194, 11.556, 0.969 random, 4, 17.516, 17.205, 1.018 random, 8, 23.501, 20.985, 1.12 random, 16, 28.131, 29.212, 0.963 random, 32, 35.436, 38.662, 0.917 random, 64, 45.74, 58.868, 0.777 random, 128, 75.394, 121.963, 0.618 random, 256, 139.524, 260.726, 0.535 Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org> |
||
---|---|---|
.. | ||
nss_compat | ||
nss_db | ||
nss_files | ||
tst-nss-compat1.root | ||
tst-nss-db-endgrent.root/etc | ||
tst-nss-db-endpwent.root | ||
tst-nss-files-hosts-long.root/etc | ||
tst-nss-gai-actions.root/etc | ||
tst-nss-test3.root | ||
tst-reload1.root | ||
tst-reload2.root | ||
alias-lookup.c | ||
bug17079.c | ||
bug-erange.c | ||
compat-lookup.c | ||
databases.def | ||
db-Makefile | ||
Depend | ||
digits_dots.c | ||
ethers-lookup.c | ||
function.def | ||
getent.c | ||
getnssent_r.c | ||
getnssent.c | ||
getXXbyYY_r.c | ||
getXXbyYY.c | ||
getXXent_r.c | ||
getXXent.c | ||
grp-lookup.c | ||
hosts-lookup.c | ||
key-lookup.c | ||
makedb.c | ||
Makefile | ||
netgrp-lookup.c | ||
network-lookup.c | ||
nss_action_parse.c | ||
nss_action.c | ||
nss_action.h | ||
nss_database.c | ||
nss_database.h | ||
nss_fgetent_r.c | ||
nss_files_data.c | ||
nss_files_fopen.c | ||
nss_files_functions.c | ||
nss_hash.c | ||
nss_module.c | ||
nss_module.h | ||
nss_parse_line_result.c | ||
nss_readline.c | ||
nss_test1.c | ||
nss_test2.c | ||
nss_test_errno.c | ||
nss_test.h | ||
nss_test.ver | ||
nss.h | ||
nsswitch.c | ||
nsswitch.conf | ||
nsswitch.h | ||
proto-lookup.c | ||
pwd-lookup.c | ||
rewrite_field.c | ||
rpc-lookup.c | ||
service-lookup.c | ||
sgrp-lookup.c | ||
simple-nss-hash.h | ||
spwd-lookup.c | ||
test-digits-dots.c | ||
test-netdb.c | ||
tst-cancel-getpwuid_r.c | ||
tst-field.c | ||
tst-nss-compat1.c | ||
tst-nss-db-endgrent.c | ||
tst-nss-db-endpwent.c | ||
tst-nss-files-alias-leak.c | ||
tst-nss-files-alias-truncated.c | ||
tst-nss-files-hosts-erange.c | ||
tst-nss-files-hosts-getent.c | ||
tst-nss-files-hosts-long.c | ||
tst-nss-files-hosts-multi.c | ||
tst-nss-gai-actions.c | ||
tst-nss-getpwent.c | ||
tst-nss-hash.c | ||
tst-nss-static.c | ||
tst-nss-test1.c | ||
tst-nss-test2.c | ||
tst-nss-test3.c | ||
tst-nss-test4.c | ||
tst-nss-test5.c | ||
tst-nss-test_errno.c | ||
tst-reload1.c | ||
tst-reload2.c | ||
valid_field.c | ||
valid_list_field.c | ||
Versions | ||
XXX-lookup.c |