[llvm-dev] gnu X sysv hash performance
Rafael Avila de Espindola via llvm-dev
llvm-dev at lists.llvm.org
Fri Dec 1 13:26:15 PST 2017
I got curious how the lld produced gnu hash tables compared to gold. To
test that I timed "perf record ninja check-llvm" (just the lit run) in a
BUILD_SHARED_LIBS build.
The performance was almost identical, so I decided to try sysv versus
gnu (both produced by lld). The results are interesting:
% grep -v '^#' perf-gnu/perf.report-by-dso-sym | head
38.77% ld-2.24.so [.] do_lookup_x
8.08% ld-2.24.so [.] strcmp
2.66% ld-2.24.so [.] _dl_relocate_object
2.58% ld-2.24.so [.] _dl_lookup_symbol_x
1.85% ld-2.24.so [.] _dl_name_match_p
1.46% [kernel.kallsyms] [k] copy_page
1.38% ld-2.24.so [.] _dl_map_object
1.30% [kernel.kallsyms] [k] unmap_page_range
1.28% [kernel.kallsyms] [k]
filemap_map_pages
1.26% libLLVMSupport.so.6.0.0svn [.] sstep
% grep -v '^#' perf-sysv/perf.report-by-dso-sym | head
42.18% ld-2.24.so [.] do_lookup_x
17.73% ld-2.24.so [.] check_match
14.41% ld-2.24.so [.] strcmp
1.22% ld-2.24.so [.] _dl_relocate_object
1.13% ld-2.24.so [.] _dl_lookup_symbol_x
0.91% ld-2.24.so [.] _dl_name_match_p
0.67% ld-2.24.so [.] _dl_map_object
0.65% [kernel.kallsyms] [k] unmap_page_range
0.63% [kernel.kallsyms] [k] copy_page
0.59% libLLVMSupport.so.6.0.0svn [.] sstep
So the gnu hash table helps a lot, but BUILD_SHARED_LIBS is still crazy
inefficient.
Cheers,
Rafael
More information about the llvm-dev
mailing list