mirror of
https://github.com/OpenMW/openmw.git
synced 2025-10-25 13:26:38 +00:00
The idea is to avoid std::map lookup for each CellRef. Instead generate a sequence of added and removed RefNums into a vector then order them by RefNum using a stable sort that preserves relative order of elements with the same RefNum. RefIDs are stored in a different vector to avoid std::string move ctor calls when swapping elements while sorting. Reversed iteration over added and removed RefNums for each unique RefNum is an equivalent to what map-based algorithm produces. The main benefit from sorting a vector is a data locality that means less cache misses for each access. Reduces ESMStore::countRecords perf cycles by 25%. |
||
|---|---|---|
| .. | ||
| bsa | ||
| bullethelpers | ||
| compiler | ||
| config | ||
| contentselector | ||
| crashcatcher | ||
| debug | ||
| detournavigator | ||
| esm | ||
| esmterrain | ||
| fallback | ||
| files | ||
| fontloader | ||
| interpreter | ||
| loadinglistener | ||
| misc | ||
| myguiplatform | ||
| nif | ||
| nifbullet | ||
| nifosg | ||
| process | ||
| resource | ||
| sceneutil | ||
| sdlutil | ||
| settings | ||
| shader | ||
| terrain | ||
| to_utf8 | ||
| translation | ||
| version | ||
| vfs | ||
| widgets | ||
| CMakeLists.txt | ||
| doc.hpp | ||