perf: async autosave for dedicated server
Autosave previously froze the main thread for 2-6 seconds while compressing the entire save file with zlib. Now the save buffer is snapshotted under the lock (~18ms), then compression runs on a background thread. The compressed data is committed to StorageManager on the next main-thread tick via CommitPendingAsyncSave(). Also skip redundant full chunk saves during autosave on the dedicated server -- chunks are already persisted by the per-tick trickle save. Only entity data is flushed, matching Xbox/Orbis behavior. Added per-step timing to the autosave handler for diagnostics.
This commit is contained in:
@@ -77,6 +77,11 @@ public:
|
||||
virtual void LockSaveAccess();
|
||||
virtual void ReleaseSaveAccess();
|
||||
|
||||
#ifdef _WINDOWS64
|
||||
// Called from the main thread to commit a completed async save to StorageManager.
|
||||
static void CommitPendingAsyncSave();
|
||||
#endif
|
||||
|
||||
virtual ESavePlatform getSavePlatform();
|
||||
virtual bool isSaveEndianDifferent();
|
||||
virtual void setLocalPlatform();
|
||||
|
||||
Reference in New Issue
Block a user