From 37c3b7b014271f52b30a7281eebc1f848bb7e66f Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 9 Jul 2009 23:29:55 +0000 Subject: * merge.cc (Object_merge_map::initialize_input_to_output_map): Reserve space in the hash table. --- gold/ChangeLog | 5 +++++ gold/merge.cc | 6 ++++++ 2 files changed, 11 insertions(+) (limited to 'gold') diff --git a/gold/ChangeLog b/gold/ChangeLog index 70349e0..974a49f 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2009-07-09 Ian Lance Taylor + + * merge.cc (Object_merge_map::initialize_input_to_output_map): + Reserve space in the hash table. + 2009-07-06 Mikolaj Zalewski * fileread.cc (File_read::get_mtime): New method. diff --git a/gold/merge.cc b/gold/merge.cc index 25ecc40..3d96921 100644 --- a/gold/merge.cc +++ b/gold/merge.cc @@ -204,6 +204,12 @@ Object_merge_map::initialize_input_to_output_map( Input_merge_map* map = this->get_input_merge_map(shndx); gold_assert(map != NULL); + gold_assert(initialize_map->empty()); + // We know how many entries we are going to add. + // reserve_unordered_map takes an expected count of buckets, not a + // count of elements, so double it to try to reduce collisions. + reserve_unordered_map(initialize_map, map->entries.size() * 2); + for (Input_merge_map::Entries::const_iterator p = map->entries.begin(); p != map->entries.end(); ++p) -- cgit v1.1