Merge pull request #13794 from Sintendo/doouble-lookup

Avoid map/set double lookups
This commit is contained in:
Admiral H. Curtiss 2025-08-01 21:43:12 +02:00 committed by GitHub
commit 06e05e0f90
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 69 additions and 74 deletions

View file

@ -251,17 +251,18 @@ static std::unique_ptr<QDirIterator> GetIterator(const QString& dir)
void GameTracker::RemoveDirectoryInternal(const QString& dir)
{
RemovePath(dir);
auto it = GetIterator(dir);
while (it->hasNext())
const auto dir_it = GetIterator(dir);
while (dir_it->hasNext())
{
QString path = QFileInfo(it->next()).canonicalFilePath();
if (m_tracked_files.contains(path))
QString path = QFileInfo(dir_it->next()).canonicalFilePath();
if (const auto it = m_tracked_files.find(path); it != m_tracked_files.end())
{
m_tracked_files[path].remove(dir);
if (m_tracked_files[path].empty())
auto& set = *it;
set.remove(dir);
if (set.isEmpty())
{
RemovePath(path);
m_tracked_files.remove(path);
m_tracked_files.erase(it);
if (m_started)
emit GameRemoved(path.toStdString());
}
@ -271,16 +272,14 @@ void GameTracker::RemoveDirectoryInternal(const QString& dir)
void GameTracker::UpdateDirectoryInternal(const QString& dir)
{
auto it = GetIterator(dir);
while (it->hasNext() && !m_processing_halted)
const auto dir_it = GetIterator(dir);
while (dir_it->hasNext() && !m_processing_halted)
{
QString path = QFileInfo(it->next()).canonicalFilePath();
QString path = QFileInfo(dir_it->next()).canonicalFilePath();
if (m_tracked_files.contains(path))
if (const auto it = m_tracked_files.find(path); it != m_tracked_files.end())
{
auto& tracked_file = m_tracked_files[path];
if (!tracked_file.contains(dir))
tracked_file.insert(dir);
it->insert(dir);
}
else
{
@ -339,8 +338,7 @@ QSet<QString> GameTracker::FindMissingFiles(const QString& dir)
while (it->hasNext())
{
QString path = QFileInfo(it->next()).canonicalFilePath();
if (m_tracked_files.contains(path))
missing_files.remove(path);
m_tracked_files.remove(path);
}
return missing_files;

View file

@ -656,8 +656,9 @@ void NetPlayDialog::UpdateGUI()
auto* name_item = new QTableWidgetItem(QString::fromStdString(p->name));
name_item->setToolTip(name_item->text());
const auto& status_info = player_status.contains(p->game_status) ?
player_status.at(p->game_status) :
const auto it = player_status.find(p->game_status);
const auto& status_info = it != player_status.end() ?
it->second :
std::make_pair(QStringLiteral("?"), QStringLiteral("?"));
auto* status_item = new QTableWidgetItem(status_info.first);
status_item->setToolTip(status_info.second);