This MR changes the AddressRepository class to perform a one-time scan of all addresses, and then caches them on disk. The cache is invalidated if the game revision number or the hash of the AddressRecords.json file changes (from what is in the cache file).
The AOB scans were previously done in parallel (due to the lazy processing of the scans on the first access). This parallel scanning is now explicitly done, and lazy processing removed.
First run:
[ 19:31:44.0742281 | SPL ] [Core] Attempting to initalize address repository for game revision: 421652
[ 19:31:44.0755893 | SPL ] [Core] No valid address record cache found. Performing first-time scan.
[ 19:31:44.7666351 | SPL ] [Core] Scanning for addresses took 690ms
Second run:
[ 19:33:07.7800850 | SPL ] [Core] Attempting to initalize address repository for game revision: 421652
[ 19:33:07.7890488 | SPL ] [Core] Restoring from address record cache.
This MR changes the
AddressRepository
class to perform a one-time scan of all addresses, and then caches them on disk. The cache is invalidated if the game revision number or the hash of theAddressRecords.json
file changes (from what is in the cache file).The AOB scans were previously done in parallel (due to the lazy processing of the scans on the first access). This parallel scanning is now explicitly done, and lazy processing removed.
First run:
Second run: