Bug 1376038 - Part 2: Cache base domains during ghost window calculation. r=mccr8

Avoid hitting the rather slow effective TLD service by caching results when
mapping URLs to their base domains. In testing the cache ranged from a 1:1 to
a 3:1 hit:miss ratio.
This commit is contained in:
Eric Rahm 2017-07-11 13:58:21 -07:00
parent 0dc3c70d24
commit eff9ba861a

View File

@ -735,6 +735,7 @@ nsWindowMemoryReporter::CheckForGhostWindows(
KillCheckTimer();
nsTHashtable<nsCStringHashKey> nonDetachedWindowDomains;
nsDataHashtable<nsISupportsHashKey, nsCString> domainMap;
// Populate nonDetachedWindowDomains.
for (auto iter = windowsById->Iter(); !iter.Done(); iter.Next()) {
@ -749,8 +750,13 @@ nsWindowMemoryReporter::CheckForGhostWindows(
nsCOMPtr<nsIURI> uri = GetWindowURI(window);
nsAutoCString domain;
if (uri) {
tldService->GetBaseDomain(uri, 0, domain);
domain = domainMap.LookupForAdd(uri).OrInsert([&]() {
nsCString d;
tldService->GetBaseDomain(uri, 0, d);
return d;
});
}
nonDetachedWindowDomains.PutEntry(domain);
}