Open
Description
Describe the bug
Working on the savefile from #45822 I noticed that achievements_tracker::deserialize
takes 40% of save loading time, or ≈13 seconds on my machine:
The culprit seems to be unordered_map
constructor:
full signature
std::__1::unordered_map <std::__1::map<
std::__1::basic_string < char, std::__1::char_traits <
char>, std::__1::allocator<char>>, cata_variant, std::__1::less <std::__1::basic_string<char,
std::__1::char_traits < char>, std::__1::allocator<char>> >, std::__1::allocator <std::__1::pair<
std::__1::basic_string < char, std::__1::char_traits <
char>, std::__1::allocator<char>> const, cata_variant> > >, event_summary, cata::range_hash, std::__1::equal_to <std::__1::map<
std::__1::basic_string < char, std::__1::char_traits <
char>, std::__1::allocator<char>>, cata_variant, std::__1::less <std::__1::basic_string<char,
std::__1::char_traits < char>, std::__1::allocator<char>> >, std::__1::allocator <std::__1::pair<
std::__1::basic_string < char, std::__1::char_traits <
char>, std::__1::allocator<char>> const, cata_variant> > > >, std::__1::allocator <std::__1::pair<
std::__1::map < std::__1::basic_string < char, std::__1::char_traits <
char>, std::__1::allocator<char>>, cata_variant, std::__1::less <std::__1::basic_string<char,
std::__1::char_traits < char>, std::__1::allocator<char>> >, std::__1::allocator <std::__1::pair<
std::__1::basic_string < char,
std::__1::char_traits < char>, std::__1::allocator<char>> const, cata_variant> > > const, event_summary> > >
::unordered_map(std::__1::unordered_map<
std::__1::map < std::__1::basic_string < char, std::__1::char_traits < char>, std::__1::allocator<char>
>, cata_variant, std::__1::less <std::__1::basic_string<char,
std::__1::char_traits < char>, std::__1::allocator<char>> >, std::__1::allocator <std::__1::pair<
std::__1::basic_string < char, std::__1::char_traits <
char>, std::__1::allocator<char>> const, cata_variant> > >, event_summary, cata::range_hash, std::__1::equal_to <std::__1::map<
std::__1::basic_string < char, std::__1::char_traits <
char>, std::__1::allocator<char>>, cata_variant, std::__1::less <std::__1::basic_string<char,
std::__1::char_traits < char>, std::__1::allocator<char>> >, std::__1::allocator <std::__1::pair<
std::__1::basic_string < char, std::__1::char_traits <
char>, std::__1::allocator<char>> const, cata_variant> > > >, std::__1::allocator <std::__1::pair<
std::__1::map < std::__1::basic_string < char, std::__1::char_traits <
char>, std::__1::allocator<char>>, cata_variant, std::__1::less <std::__1::basic_string<char,
std::__1::char_traits < char>, std::__1::allocator<char>> >, std::__1::allocator <std::__1::pair<
std::__1::basic_string < char, std::__1::char_traits <
char>, std::__1::allocator<char>> const, cata_variant> > > const, event_summary> > > const&)
Steps To Reproduce
- Profile the loading of the savefile from Game hangs for a couple seconds when approaching my base after being far away from it. #45822
Expected behavior
The serialized json form for achievement tracking is not that big, so I suspect some inefficiency in the implementation.
Versions and configuration
- OS: MacOs
- OS Version: Name: Mac OS X; Version: 10.14.6; Build: 18G103;
- Game Version: 0.E-8922-gb130292b1c [64-bit]
- Graphics Version: Tiles
- Game Language: English [en]
- Mods loaded: [
Dark Days Ahead [dda],
Disable NPC Needs [no_npc_food],
SpeedyDex [speedydex],
Stats Through Kills [stats_through_kills],
Mythical Martial Arts [MMA],
Alternative Map Key [alt_map_key],
Magiclysm [magiclysm],
Graphical Overmap [Graphical_Overmap],
Graphical Overmap Magiclysm [Graphical_Overmap_Magiclysm],
No Fungal Monsters [No_Fungi]
]
Activity