Bug 75571 - AtomicString::addSlowCase is too slow
Summary: AtomicString::addSlowCase is too slow
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Web Template Framework (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on: 99118
Blocks:
  Show dependency treegraph
 
Reported: 2012-01-04 13:44 PST by Ryosuke Niwa
Modified: 2012-10-11 18:51 PDT (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ryosuke Niwa 2012-01-04 13:44:01 PST
Profiled WebKit r103959 while it was running DOM Attributes tests on http://dromaeo.com/?dom

It seems like we need to do something about AtomicString::addSlowCase. Maybe we're creating atomic string too often?

	6.6%	6.6%	JavaScriptCore	JSC::IdentifierTable::add(WTF::StringImpl*)
	5.8%	5.8%	JavaScriptCore	WTF::AtomicString::addSlowCase(WTF::StringImpl*)
	0.0%	4.2%	Unknown Library	 0x1128e2e80 [unknown]
	0.0%	1.1%	Unknown Library	 0x112a4b9a8 [unknown]
	0.0%	0.1%	WebCore	 WebCore::JSHTMLElement::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::JSValue, JSC::PutPropertySlot&)
	0.0%	0.1%	Unknown Library	 0x2becb9401538 [unknown]
	0.0%	0.1%	WebCore	 WebCore::setJSHTMLElementId(JSC::ExecState*, JSC::JSObject*, JSC::JSValue)
	0.0%	0.1%	WebCore	 WebCore::jsElementPrototypeFunctionSetAttribute(JSC::ExecState*)
	0.0%	0.0%	Unknown Library	 0x112ac1818 [unknown]
	0.0%	0.0%	Unknown Library	 0x112a46020 [unknown]
	0.0%	0.0%	Unknown Library	 0x11a7e0660 [unknown]
	0.0%	0.0%	Unknown Library	 0x113b59b60 [unknown]
	0.0%	0.0%	Unknown Library	 0x1195f74a8 [unknown]
	5.1%	5.1%	WebCore	WTF::HashTableIterator<WTF::StringImpl*, std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> >, WTF::PairFirstExtractor<std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> > >, WTF::StringHash, WTF::PairHashTraits<WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<JSC::Weak<JSC::JSString> > >, WTF::HashTraits<WTF::StringImpl*> > WTF::HashTable<WTF::StringImpl*, std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> >, WTF::PairFirstExtractor<std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> > >, WTF::StringHash, WTF::PairHashTraits<WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<JSC::Weak<JSC::JSString> > >, WTF::HashTraits<WTF::StringImpl*> >::find<WTF::IdentityHashTranslator<WTF::StringHash>, WTF::StringImpl*>(WTF::StringImpl* const&)
	3.5%	3.5%	WebCore	WebCore::JSHTMLElement::getOwnPropertySlot(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::PropertySlot&)
	3.5%	3.5%	JavaScriptCore	JSC::MarkedBlock::sweep(JSC::MarkedBlock::SweepMode)
	3.1%	3.1%	Unknown Library	0x2becb9401640 [23.2KB]
	2.9%	2.9%	JavaScriptCore	JSC::JSValue::toPrimitiveString(JSC::ExecState*) const
	2.7%	2.7%	WebCore	bool WTF::HashTable<WTF::AtomicStringImpl*, WTF::AtomicStringImpl*, WTF::IdentityExtractor, WTF::PtrHash<WTF::AtomicStringImpl*>, WTF::HashTraits<WTF::AtomicStringImpl*>, WTF::HashTraits<WTF::AtomicStringImpl*> >::contains<WTF::IdentityHashTranslator<WTF::PtrHash<WTF::AtomicStringImpl*> >, WTF::AtomicStringImpl*>(WTF::AtomicStringImpl* const&) const
	2.7%	2.7%	JavaScriptCore	JSC::JSString::resolveRope(JSC::ExecState*) const
	2.6%	2.6%	JavaScriptCore	JSC::JSValue::get(JSC::ExecState*, JSC::Identifier const&, JSC::PropertySlot&) const
	2.5%	2.5%	WebCore	WebCore::jsString(JSC::ExecState*, WTF::String const&)
	2.5%	2.5%	WebCore	WebCore::Element::setAttribute(WTF::AtomicString const&, WTF::AtomicString const&, int&)
	2.4%	2.4%	WebCore	JSC::JSValue::toString(JSC::ExecState*) const
	2.2%	2.2%	WebCore	WebCore::Element::idAttributeChanged(WebCore::Attribute*)
	2.2%	2.2%	WebCore	WebCore::Element::getAttribute(WebCore::QualifiedName const&) const
	2.1%	2.1%	Unknown Library	0x2becb9407ee0 [8.6KB]
	2.0%	2.0%	WebCore	WebCore::JSHTMLHeadingElement::getOwnPropertySlot(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::PropertySlot&)
	2.0%	2.0%	JavaScriptCore	WTF::StringImpl::lower()
Comment 1 Eric Seidel (no email) 2012-10-11 18:51:04 PDT
I suspect this would be fixed by bug 99118.