mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-31 17:07:14 +00:00
perf(cdclient): keep ComponentsRegistry and ItemComponent in memory
Every entity and every inventory item looks these up, and an id not seen yet was a full scan of the unindexed table, so a character holding about 3000 different items took a minute to load (the client waited at 35%). Loading both tables once at startup costs a few MB per server. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -123,7 +123,10 @@ void CDClientManager::LoadValuesFromDatabase() {
|
|||||||
CDBehaviorTemplateTable::Instance().LoadValuesFromDatabase();
|
CDBehaviorTemplateTable::Instance().LoadValuesFromDatabase();
|
||||||
CDBrickIDTableTable::Instance().LoadValuesFromDatabase();
|
CDBrickIDTableTable::Instance().LoadValuesFromDatabase();
|
||||||
CDCollectibleComponentTable::Instance().LoadValuesFromDatabase();
|
CDCollectibleComponentTable::Instance().LoadValuesFromDatabase();
|
||||||
CDCLIENT_DONT_CACHE_TABLE(CDComponentsRegistryTable::Instance().LoadValuesFromDatabase());
|
// Always in memory: every entity and every inventory item asks for its components and item data, and looking up an
|
||||||
|
// id not seen yet in the unindexed CDClient scans the whole table (a character holding 3000 different items took a
|
||||||
|
// minute to load)
|
||||||
|
CDComponentsRegistryTable::Instance().LoadValuesFromDatabase();
|
||||||
CDCurrencyTableTable::Instance().LoadValuesFromDatabase();
|
CDCurrencyTableTable::Instance().LoadValuesFromDatabase();
|
||||||
CDDeletionRestrictionsTable::Instance().LoadValuesFromDatabase();
|
CDDeletionRestrictionsTable::Instance().LoadValuesFromDatabase();
|
||||||
CDDestructibleComponentTable::Instance().LoadValuesFromDatabase();
|
CDDestructibleComponentTable::Instance().LoadValuesFromDatabase();
|
||||||
@@ -131,7 +134,7 @@ void CDClientManager::LoadValuesFromDatabase() {
|
|||||||
CDEventGatingTable::Instance().LoadValuesFromDatabase();
|
CDEventGatingTable::Instance().LoadValuesFromDatabase();
|
||||||
CDFeatureGatingTable::Instance().LoadValuesFromDatabase();
|
CDFeatureGatingTable::Instance().LoadValuesFromDatabase();
|
||||||
CDInventoryComponentTable::Instance().LoadValuesFromDatabase();
|
CDInventoryComponentTable::Instance().LoadValuesFromDatabase();
|
||||||
CDCLIENT_DONT_CACHE_TABLE(CDItemComponentTable::Instance().LoadValuesFromDatabase());
|
CDItemComponentTable::Instance().LoadValuesFromDatabase();
|
||||||
CDItemSetSkillsTable::Instance().LoadValuesFromDatabase();
|
CDItemSetSkillsTable::Instance().LoadValuesFromDatabase();
|
||||||
CDItemSetsTable::Instance().LoadValuesFromDatabase();
|
CDItemSetsTable::Instance().LoadValuesFromDatabase();
|
||||||
CDLevelProgressionLookupTable::Instance().LoadValuesFromDatabase();
|
CDLevelProgressionLookupTable::Instance().LoadValuesFromDatabase();
|
||||||
|
|||||||
Reference in New Issue
Block a user