Performance[ | ]
The slowest actions:
- Cargo queries (~100-200 queries take one second)
- Template expansion, especially with templates that query Cargo tables (implement no-Cargo variants in Lua)
- Templates that simply wrap Lua modules, they also bump up the post-expand include size (invoke directly whenever possible)
- Images (~300 images take one second)
- Concatenating long strings in Lua (~ 1 second on long pages,
table.concat
is more idiomatic and often leads toList.map
)
Cargo[ | ]
- All joins are left outer joins
#cargo_query
does not supportfield
arguments that are too long (around 250 characters),mw.ext.cargo.query
has no issues with those argumentsmw.ext.cargo.query
either returns a table or raises an error- Null fields are represented as empty strings in
mw.ext.cargo.query
- Multiple
HOLDS
clauses on the same field, likeProperties HOLDS 'a' AND Properties HOLDS 'b'
, will always fail as they expand to__Properties._value='a' AND __Properties._value='b'
Binary[ | ]
- Files that contain reward payloads:
files/assets/Common/Arena/*.bin
→ Arenafiles/assets/Common/FriendDouble/*.bin
→ Allegiance Battlesfiles/assets/Common/HolyGrail/*.bin
→ Use Heroic Grailsfiles/assets/Common/Home/9h-bR4lQy/*.bin
→ Heroes' Pathfiles/assets/Common/Mission/*.bin
→ Quests and Missionsfiles/assets/Common/MusicShop/ProductMusic/*.bin
→ Concert Hallfiles/assets/Common/Occupation/Data/*.bin
→ Grand Conquestsfiles/assets/Common/Portrait/*.bin
→ Forging Bondsfiles/assets/Common/SequentialArena/*.bin
→ Arena Assaultfiles/assets/Common/Shadow/*.bin
→ Røkkr Siegesfiles/assets/Common/SkyCastle/BattleData/*.bin
→ Aether Raidsfiles/assets/Common/SkyCastle/HolidayShopData/*.bin
→ Aether Resortfiles/assets/Common/SkyCastle/MiscData/*.bin
→ Aether Raids (first play bonus)files/assets/Common/SRPG/BlessingGarden/*.bin
→ Blessed Gardensfiles/assets/Common/SRPG/SequentialMap/*.bin
→ Tempest Trialsfiles/assets/Common/SRPG/SequentialTrialBind/*.bin
→ Squad Assaultfiles/assets/Common/SRPG/SequentialTrialMainStory/*.bin
→ Chain Challengefiles/assets/Common/SRPG/SequentialTrialSideStory/*.bin
→ Chain Challengefiles/assets/Common/SRPG/StageEvent/*.bin
→ Special Mapsfiles/assets/Common/SRPG/StagePuzzle/*.bin
→ Tactics Drillsfiles/assets/Common/SRPG/StageScenario/*.bin
→ Story Maps, Paralogue Mapsfiles/assets/Common/TapAction/TapBattleData/*.bin
→ Tap Battle: Illusory Dungeonfiles/assets/Common/Tournament/*.bin
→ Voting Gauntletfiles/assets/Common/Trip/Terms/*.bin
→ Lost Lore
Replacing Cargo tables[ | ]
- Create a separate template whose only purpose is to declare B and store rows into B
- Wherever rows are stored into A, store into B also
- Regenerate B
- Ensure A and B are equivalent
- Convert all queries that use A to use B instead
- Delete stores into A, A itself, and declaration of A
- Move the contents of the transitional template into where A was declared
- Delete the transitional template