mirror of
https://github.com/Blinue/Magpie.git
synced 2026-06-24 02:04:10 +00:00
perf: 添加内存缓存
This commit is contained in:
parent
1144b47a08
commit
c955e8d3bf
3 changed files with 38 additions and 4 deletions
|
|
@ -152,10 +152,29 @@ std::wstring EffectCache::_GetCacheFileName(const wchar_t* fileName, std::string
|
|||
return fmt::format(L".\\cache\\{}_{}.{}", ConvertFileName(fileName), StrUtils::UTF8ToUTF16(hash), _SUFFIX);
|
||||
}
|
||||
|
||||
void EffectCache::_AddToMemCache(const std::wstring& cacheFileName, const EffectDesc& desc) {
|
||||
_memCache[cacheFileName] = desc;
|
||||
|
||||
if (_memCache.size() > _MAX_CACHE_COUNT) {
|
||||
// 清理一半内存缓存
|
||||
auto it = _memCache.begin();
|
||||
std::advance(it, _memCache.size() / 2);
|
||||
_memCache.erase(_memCache.begin(), it);
|
||||
|
||||
SPDLOG_LOGGER_INFO(logger, "已清理内存缓存");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool EffectCache::Load(const wchar_t* fileName, std::string_view hash, EffectDesc& desc) {
|
||||
std::wstring cacheFileName = _GetCacheFileName(fileName, hash);
|
||||
|
||||
auto it = _memCache.find(cacheFileName);
|
||||
if (it != _memCache.end()) {
|
||||
desc = it->second;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!Utils::FileExists(cacheFileName.c_str())) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -205,6 +224,8 @@ bool EffectCache::Load(const wchar_t* fileName, std::string_view hash, EffectDes
|
|||
desc = {};
|
||||
return false;
|
||||
}
|
||||
|
||||
_AddToMemCache(cacheFileName, desc);
|
||||
|
||||
SPDLOG_LOGGER_INFO(logger, "已读取缓存 " + StrUtils::UTF16ToUTF8(cacheFileName));
|
||||
return true;
|
||||
|
|
@ -280,5 +301,7 @@ void EffectCache::Save(const wchar_t* fileName, std::string_view hash, const Eff
|
|||
SPDLOG_LOGGER_ERROR(logger, "保存缓存失败");
|
||||
}
|
||||
|
||||
_AddToMemCache(cacheFileName, desc);
|
||||
|
||||
SPDLOG_LOGGER_INFO(logger, "已保存缓存 " + StrUtils::UTF16ToUTF8(cacheFileName));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue