mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-07-25 00:04:49 +02:00
Add an unordered_map to TreeEntry for faster lookup
This commit is contained in:
@@ -297,6 +297,11 @@ void ISOFileSystem::ReadDirectory(u32 startsector, u32 dirsize, TreeEntry *root,
|
||||
root->children.push_back(e);
|
||||
}
|
||||
}
|
||||
|
||||
root->fastChildren.reserve(root->children.size());
|
||||
for (TreeEntry *e : root->children) {
|
||||
root->fastChildren[e->name] = e;
|
||||
}
|
||||
}
|
||||
|
||||
ISOFileSystem::TreeEntry *ISOFileSystem::GetFromPath(std::string path, bool catchError)
|
||||
@@ -323,18 +328,12 @@ ISOFileSystem::TreeEntry *ISOFileSystem::GetFromPath(std::string path, bool catc
|
||||
if (path.length() > 0)
|
||||
{
|
||||
const std::string firstPathComponent = path.substr(0, path.find_first_of('/'));
|
||||
for (size_t i = 0; i < e->children.size(); i++)
|
||||
{
|
||||
const std::string &n = e->children[i]->name;
|
||||
|
||||
if (firstPathComponent == n)
|
||||
{
|
||||
//yay we got it
|
||||
ne = e->children[i];
|
||||
name = n;
|
||||
break;
|
||||
}
|
||||
}
|
||||
auto child = e->fastChildren.find(firstPathComponent);
|
||||
if (child != e->fastChildren.end()) {
|
||||
//yay we got it
|
||||
ne = child->second;
|
||||
name = child->first;
|
||||
}
|
||||
}
|
||||
if (ne)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user