CAudioGroupLoader: Reserve audio lookup table elements beforehand

Potentially reduces repeated reallocations.
This commit is contained in:
Lioncache
2025-12-06 17:46:28 -05:00
parent 335816af03
commit 04f31acc71

View File

@@ -16,7 +16,6 @@ std::unique_ptr<CAudioGroup> CAudioGroupLoader::LoadAGSC(IInputStream& rAGSC, CR
const uint32 PoolSize = rAGSC.ReadULong(); const uint32 PoolSize = rAGSC.ReadULong();
rAGSC.Seek(PoolSize + 0x4, SEEK_CUR); rAGSC.Seek(PoolSize + 0x4, SEEK_CUR);
} }
else else
{ {
rAGSC.Seek(0x4, SEEK_CUR); rAGSC.Seek(0x4, SEEK_CUR);
@@ -49,7 +48,8 @@ std::unique_ptr<CAudioGroup> CAudioGroupLoader::LoadAGSC(IInputStream& rAGSC, CR
const uint16 NumSounds = rAGSC.ReadUShort(); const uint16 NumSounds = rAGSC.ReadUShort();
rAGSC.Seek(0x2, SEEK_CUR); rAGSC.Seek(0x2, SEEK_CUR);
for (uint32 iSfx = 0; iSfx < NumSounds; iSfx++) pOut->mDefineIDs.reserve(NumSounds);
for (uint32 i = 0; i < NumSounds; i++)
{ {
pOut->mDefineIDs.push_back(rAGSC.ReadUShort()); pOut->mDefineIDs.push_back(rAGSC.ReadUShort());
rAGSC.Seek(0x8, SEEK_CUR); rAGSC.Seek(0x8, SEEK_CUR);
@@ -65,8 +65,9 @@ std::unique_ptr<CAudioLookupTable> CAudioGroupLoader::LoadATBL(IInputStream& rAT
auto pOut = std::make_unique<CAudioLookupTable>(pEntry); auto pOut = std::make_unique<CAudioLookupTable>(pEntry);
const uint32 NumMacroIDs = rATBL.ReadULong(); const uint32 NumMacroIDs = rATBL.ReadULong();
for (uint32 iMacro = 0; iMacro < NumMacroIDs; iMacro++) pOut->mDefineIDs.reserve(NumMacroIDs);
pOut->mDefineIDs.push_back( rATBL.ReadShort() ); for (uint32 i = 0; i < NumMacroIDs; i++)
pOut->mDefineIDs.push_back(rATBL.ReadShort());
return pOut; return pOut;
} }
@@ -75,9 +76,9 @@ std::unique_ptr<CStringList> CAudioGroupLoader::LoadSTLC(IInputStream& rSTLC, CR
{ {
auto pOut = std::make_unique<CStringList>(pEntry); auto pOut = std::make_unique<CStringList>(pEntry);
const uint32 NumStrings = rSTLC.ReadULong(); const uint32 NumStrings = rSTLC.ReadULong();
pOut->mStringList.reserve(NumStrings);
for (uint32 iStr = 0; iStr < NumStrings; iStr++) pOut->mStringList.reserve(NumStrings);
for (uint32 i = 0; i < NumStrings; i++)
pOut->mStringList.push_back(rSTLC.ReadString()); pOut->mStringList.push_back(rSTLC.ReadString());
return pOut; return pOut;