This is the mail archive of the
gdb-testers@sourceware.org
mailing list for the GDB project.
[binutils-gdb] .gdb_index prod perf regression: find before insert in unordered_map
- From: sergiodj+buildbot at sergiodj dot net
- To: gdb-testers at sourceware dot org
- Date: Mon, 12 Jun 2017 14:41:29 -0400
- Subject: [binutils-gdb] .gdb_index prod perf regression: find before insert in unordered_map
- Authentication-results: sourceware.org; auth=none
*** TEST RESULTS FOR COMMIT 70a1152bee7cb959ab0c6c13bada03190125022f ***
Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 70a1152bee7cb959ab0c6c13bada03190125022f
.gdb_index prod perf regression: find before insert in unordered_map
"perf" shows the unordered_map::emplace call in write_hash_table a bit
high up on profiles. Fix this using the find + insert idiom instead
of going straight to insert.
I tried doing the same to the other unordered_maps::emplace calls in
the file, but saw no performance improvement, so left them be.
With a '-g3 -O2' build of gdb, and:
$ cat save-index.cmd
set $i = 0
while $i < 100
save gdb-index .
set $i = $i + 1
end
$ time ./gdb -data-directory=data-directory -nx --batch -q -x save-index.cmd ./gdb.pristine
I get an improvement of ~7%:
~7.0s => ~6.5s (average of 5 runs).
gdb/ChangeLog:
2017-06-12 Pedro Alves <palves@redhat.com>
* dwarf2read.c (write_hash_table): Check if key already exists
before emplacing.