This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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]

Re: [patch] Use a std::vector instead of a std::map to hold Input_merge_map


>>>> A std::map is hardly the best data structure for a small map from
>>>> small integers.
>>>>
>>>> The attached patch uses a std::vector<std::pair>> instead.
>>>>
>>>> This simplifies the code and speeds up linking of chromium (see
>>>> attached perf logs).

Yes, it seems like the original assumption that object files would
rarely have more than 2 merge sections is outdated.

Out of curiosity, did you try using an Unordered_map instead of
std::map? (While also removing first_map_ and second_map_.) I wonder
where the break-even point is between using a hash map and a linear
search.

> 2015-04-23  Rafael Ãvila de EspÃndola <rafael.espindola@gmail.com>
>
>         * merge.cc (get_input_merge_map): Update for data structure change.
>           (get_or_make_input_merge_map): Update for data structure change.
>         * merge.h (Object_merge_map): Use a std::vector<std::pair>> instead of
>           a std::map.

Please add a note in the ChangeLog entry about removing first_shnum_, etc.

This is OK. Thanks!

-cary


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]