优化起源:
项目ini的section下key太多了,导致ini在去重校验中特别耗时,所以此优化可以使用在ini中某一个section特别多key的场景,
结果:之前的20多s可以优化到4s左右,减轻系统IO负重。
原数据存储结构:std::map<std::string, CfgSection> mCfgData;
优化后的存储结构:std::map<std::string, std::map<std::string,Array<CfgMeta> > > mCfgData;
原始key的查重方式:
for (U32 i = 0; i < mCfgData[section].field.length(); i++)
{
if (!mCfgData[section].field[i].key.compare(field))
{
...................
}
}
优化后key的查重方式:
std::map<std::string, std::map<std::string,Array<CfgMeta> > >::iterator itSec = mCfgData.find(section);
if(itSec != mCfgData.end())
{
std::map<std::string,Array<CfgMeta> >::iterator itKey = itSec->second.find(field);
}