This repository has been archived by the owner on Dec 16, 2019. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Huge memory savings (and more to come)
Custom Record Pool Allocators and lazy string / raw record copying Minimum memory use (Oblivion.esm only) reduced from 130MB to 105MB Max memory use (Oblivion.esm only) reduced from 635MB to 466MB Custom Record Pool Allocators Loads Oblivion.esm faster by ~.2 seconds Iterating through records should be faster due to improved locality (not benched) StringRecord, NonNullStringRecord, and RawRecord no longer load into memory when read from disk Instead they simply point to the data on disk, and only copy into memory when written Saves ~15MB on max memory use (Oblivion.esm only) StringRecord, NonNullStringRecord cleaned up and underused functions removed Next step is a custom string allocator Call Count and Timing macros now display DeleteCollection properly Creating an EditorID keyed record (Ob::GMSTRecord, Ob::MGEFRecord) no longer copies the editorID twice Added a series of generic debug vars for misc use if CBASH_DEBUG_VARS is defined Added UnorderedPackedStrings::Copy, and used in place of std::vector<StringRecord> in Oblivion records Fixed? possible corruption of OBME mgefCode when copying or creating a new record
- Loading branch information