Bug 186742
Summary: | TreeScopeOrderedMap wastes 132KB of HashTable capacity on nytimes.com | ||
---|---|---|---|
Product: | WebKit | Reporter: | Simon Fraser (smfr) <simon.fraser> |
Component: | Layout and Rendering | Assignee: | Nobody <webkit-unassigned> |
Status: | NEW | ||
Severity: | Normal | CC: | bfulgham, cdumez, koivisto, simon.fraser, webkit-bug-importer, zalan |
Priority: | P2 | Keywords: | InRadar |
Version: | WebKit Nightly Build | ||
Hardware: | Unspecified | ||
OS: | Unspecified |
Simon Fraser (smfr)
Using tooling from bug 186698, loading nytimes.com and running "notifyutil -p com.apple.WebKit.dumpHashTableCapacity" shows:
Wasted capacity: 131912 bytes (used 65208 of 197120 bytes, utilization: 33.08%) - 80 allocations
1 0x1078997a5 WTF::HashTable<WTF::AtomicStringImpl const*, WTF::KeyValuePair<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry> >, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashMap<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>, WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry> >::KeyValuePairTraits, WTF::HashTraits<WTF::AtomicStringImpl const*> >::HashTable()
2 0x107899785 WTF::HashMap<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>, WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry> >::HashMap()
3 0x107899765 WTF::HashMap<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>, WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry> >::HashMap()
4 0x107899745 WebCore::TreeScopeOrderedMap::TreeScopeOrderedMap()
5 0x107899725 WebCore::TreeScopeOrderedMap::TreeScopeOrderedMap()
6 0x10788e206 WebCore::TreeScope::addElementById(WTF::AtomicStringImpl const&, WebCore::Element&, bool)
7 0x1077630f8 WebCore::Element::updateIdForTreeScope(WebCore::TreeScope&, WTF::AtomicString const&, WTF::AtomicString const&, WebCore::Element::NotifyObservers)
8 0x107762cd2 WebCore::Element::insertedIntoAncestor(WebCore::Node::InsertionType, WebCore::ContainerNode&)
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/41189300>
Simon Fraser (smfr)
Also these call sites:
Wasted capacity: 70928 bytes (used 11440 of 82368 bytes, utilization: 13.89%) - 1273 allocations
1 0x1076fd625 WTF::HashTable<WebCore::Element*, WebCore::Element*, WTF::IdentityExtractor, WTF::PtrHash<WebCore::Element*>, WTF::HashTraits<WebCore::Element*>, WTF::HashTraits<WebCore::Element*> >::HashTable()
2 0x1076fd605 WTF::HashSet<WebCore::Element*, WTF::PtrHash<WebCore::Element*>, WTF::HashTraits<WebCore::Element*> >::HashSet()
3 0x1076a8d65 WTF::HashSet<WebCore::Element*, WTF::PtrHash<WebCore::Element*>, WTF::HashTraits<WebCore::Element*> >::HashSet()
4 0x10789c652 WebCore::TreeScopeOrderedMap::MapEntry::MapEntry(WebCore::Element*)
5 0x10789c5fd WebCore::TreeScopeOrderedMap::MapEntry::MapEntry(WebCore::Element*)
6 0x10789c0cf WebCore::TreeScopeOrderedMap::add(WTF::AtomicStringImpl const&, WebCore::Element&, WebCore::TreeScope const&)::$_0::operator()() const
7 0x10789afd5 void WTF::HashMapEnsureTranslator<WTF::HashMap<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>, WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry> >::KeyValuePairTraits, WTF::PtrHash<WTF::AtomicStringImpl const*> >::translate<WTF::KeyValuePair<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry>, WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::add(WTF::AtomicStringImpl const&, WebCore::Element&, WebCore::TreeScope const&)::$_0>(WTF::KeyValuePair<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry>&, WTF::AtomicStringImpl const*&&, WebCore::TreeScopeOrderedMap::add(WTF::AtomicStringImpl const&, WebCore::Element&, WebCore::TreeScope const&)::$_0&&)
8 0x10789ac73 WTF::HashTableAddResult<WTF::HashTableIterator<WTF::AtomicStringImpl const*, WTF::KeyValuePair<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry> >, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashMap<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>, WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry> >::KeyValuePairTraits, WTF::HashTraits<WTF::AtomicStringImpl const*> > > WTF::HashTable<WTF::AtomicStringImpl const*, WTF::KeyValuePair<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry> >, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashMap<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>, WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry> >::KeyValuePairTraits, WTF::HashTraits<WTF::AtomicStringImpl const*> >::add<WTF::HashMapEnsureTranslator<WTF::HashMap<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>, WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry> >::KeyValuePairTraits, WTF::PtrHash<WTF::AtomicStringImpl const*> >, WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::add(WTF::AtomicStringImpl const&, WebCore::Element&, WebCore::TreeScope const&)::$_0>(WTF::AtomicStringImpl const*&&, WebCore::TreeScopeOrderedMap::add(WTF::AtomicStringImpl const&, WebCore::Element&, WebCore::TreeScope const&)::$_0&&)
Wasted capacity: 63448 bytes (used 42856 of 106304 bytes, utilization: 40.31%) - 22 allocations
1 0x1078997a5 WTF::HashTable<WTF::AtomicStringImpl const*, WTF::KeyValuePair<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry> >, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashMap<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>, WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry> >::KeyValuePairTraits, WTF::HashTraits<WTF::AtomicStringImpl const*> >::HashTable()
2 0x107899785 WTF::HashMap<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>, WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry> >::HashMap()
3 0x107899765 WTF::HashMap<WTF::AtomicStringImpl const*, WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>, WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry> >::HashMap()
4 0x107899745 WebCore::TreeScopeOrderedMap::TreeScopeOrderedMap()
5 0x107899725 WebCore::TreeScopeOrderedMap::TreeScopeOrderedMap()
6 0x107a54296 WebCore::HTMLDocument::HTMLDocument(WebCore::Frame*, WebCore::URL const&, unsigned char, unsigned int)
7 0x107a54358 WebCore::HTMLDocument::HTMLDocument(WebCore::Frame*, WebCore::URL const&, unsigned char, unsigned int)
8 0x10768a2a7 WebCore::HTMLDocument::create(WebCore::Frame*, WebCore::URL const&)
Chris Dumez
(In reply to Simon Fraser (smfr) from comment #2)
> Also these call sites:
>
> Wasted capacity: 70928 bytes (used 11440 of 82368 bytes, utilization:
> 13.89%) - 1273 allocations
> 1 0x1076fd625 WTF::HashTable<WebCore::Element*, WebCore::Element*,
> WTF::IdentityExtractor, WTF::PtrHash<WebCore::Element*>,
> WTF::HashTraits<WebCore::Element*>, WTF::HashTraits<WebCore::Element*>
> >::HashTable()
> 2 0x1076fd605 WTF::HashSet<WebCore::Element*,
> WTF::PtrHash<WebCore::Element*>, WTF::HashTraits<WebCore::Element*>
> >::HashSet()
> 3 0x1076a8d65 WTF::HashSet<WebCore::Element*,
> WTF::PtrHash<WebCore::Element*>, WTF::HashTraits<WebCore::Element*>
> >::HashSet()
> 4 0x10789c652
> WebCore::TreeScopeOrderedMap::MapEntry::MapEntry(WebCore::Element*)
> 5 0x10789c5fd
> WebCore::TreeScopeOrderedMap::MapEntry::MapEntry(WebCore::Element*)
> 6 0x10789c0cf WebCore::TreeScopeOrderedMap::add(WTF::AtomicStringImpl
> const&, WebCore::Element&, WebCore::TreeScope const&)::$_0::operator()()
> const
> 7 0x10789afd5 void
> WTF::HashMapEnsureTranslator<WTF::HashMap<WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl
> const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>,
> WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry>
> >::KeyValuePairTraits, WTF::PtrHash<WTF::AtomicStringImpl const*>
> >::translate<WTF::KeyValuePair<WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::MapEntry>, WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::add(WTF::AtomicStringImpl const&,
> WebCore::Element&, WebCore::TreeScope
> const&)::$_0>(WTF::KeyValuePair<WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::MapEntry>&, WTF::AtomicStringImpl const*&&,
> WebCore::TreeScopeOrderedMap::add(WTF::AtomicStringImpl const&,
> WebCore::Element&, WebCore::TreeScope const&)::$_0&&)
> 8 0x10789ac73
> WTF::HashTableAddResult<WTF::HashTableIterator<WTF::AtomicStringImpl const*,
> WTF::KeyValuePair<WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::MapEntry>,
> WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::AtomicStringImpl
> const*, WebCore::TreeScopeOrderedMap::MapEntry> >,
> WTF::PtrHash<WTF::AtomicStringImpl const*>,
> WTF::HashMap<WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl
> const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>,
> WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry>
> >::KeyValuePairTraits, WTF::HashTraits<WTF::AtomicStringImpl const*> > >
> WTF::HashTable<WTF::AtomicStringImpl const*,
> WTF::KeyValuePair<WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::MapEntry>,
> WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::AtomicStringImpl
> const*, WebCore::TreeScopeOrderedMap::MapEntry> >,
> WTF::PtrHash<WTF::AtomicStringImpl const*>,
> WTF::HashMap<WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl
> const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>,
> WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry>
> >::KeyValuePairTraits, WTF::HashTraits<WTF::AtomicStringImpl const*>
> >::add<WTF::HashMapEnsureTranslator<WTF::HashMap<WTF::AtomicStringImpl
> const*, WebCore::TreeScopeOrderedMap::MapEntry,
> WTF::PtrHash<WTF::AtomicStringImpl const*>,
> WTF::HashTraits<WTF::AtomicStringImpl const*>,
> WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry>
> >::KeyValuePairTraits, WTF::PtrHash<WTF::AtomicStringImpl const*> >,
> WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::add(WTF::AtomicStringImpl const&,
> WebCore::Element&, WebCore::TreeScope const&)::$_0>(WTF::AtomicStringImpl
> const*&&, WebCore::TreeScopeOrderedMap::add(WTF::AtomicStringImpl const&,
> WebCore::Element&, WebCore::TreeScope const&)::$_0&&)
>
> Wasted capacity: 63448 bytes (used 42856 of 106304 bytes, utilization:
> 40.31%) - 22 allocations
> 1 0x1078997a5 WTF::HashTable<WTF::AtomicStringImpl const*,
> WTF::KeyValuePair<WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::MapEntry>,
> WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::AtomicStringImpl
> const*, WebCore::TreeScopeOrderedMap::MapEntry> >,
> WTF::PtrHash<WTF::AtomicStringImpl const*>,
> WTF::HashMap<WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl
> const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>,
> WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry>
> >::KeyValuePairTraits, WTF::HashTraits<WTF::AtomicStringImpl const*>
> >::HashTable()
> 2 0x107899785 WTF::HashMap<WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl
> const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>,
> WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry> >::HashMap()
> 3 0x107899765 WTF::HashMap<WTF::AtomicStringImpl const*,
> WebCore::TreeScopeOrderedMap::MapEntry, WTF::PtrHash<WTF::AtomicStringImpl
> const*>, WTF::HashTraits<WTF::AtomicStringImpl const*>,
> WTF::HashTraits<WebCore::TreeScopeOrderedMap::MapEntry> >::HashMap()
> 4 0x107899745 WebCore::TreeScopeOrderedMap::TreeScopeOrderedMap()
> 5 0x107899725 WebCore::TreeScopeOrderedMap::TreeScopeOrderedMap()
> 6 0x107a54296 WebCore::HTMLDocument::HTMLDocument(WebCore::Frame*,
> WebCore::URL const&, unsigned char, unsigned int)
> 7 0x107a54358 WebCore::HTMLDocument::HTMLDocument(WebCore::Frame*,
> WebCore::URL const&, unsigned char, unsigned int)
> 8 0x10768a2a7 WebCore::HTMLDocument::create(WebCore::Frame*, WebCore::URL
> const&)
Were you using a debug build? This particular HashSet seems to be debug-only.