[Webkit-unassigned] [Bug 73853] Inserting nodes is slow due to Node::notifyNodeListsAttributeChanged (20%+)

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Dec 20 11:24:15 PST 2011


https://bugs.webkit.org/show_bug.cgi?id=73853





--- Comment #20 from Ryosuke Niwa <rniwa at webkit.org>  2011-12-20 11:24:14 PST ---
Unfortunately, there appears to be 3% regression in PerformanceTests/Parser/html-parser.html

Without patch:
avg 21238.6
median 21242.5
stdev 42.886361468420226
min 21168
max 21322

With patch:
avg 21714.15
median 21710.5
stdev 61.88317622746912
min 21614
max 21847

However, profile result doesn't tell us why this regression had happened. The regression doesn't appear to be a test flake given I've tried a couple of times and got a similar result.

Here's profile result:

5.5%    5.5%    WebCore    WebCore::HTMLTokenizer::nextToken(WebCore::SegmentedString&, WebCore::HTMLToken&)
3.0%    3.0%    WebCore    WebCore::CSSStyleSelector::matchRulesForList(WTF::Vector<WebCore::RuleData, 0ul> const*, int&, int&, bool)
1.9%    1.9%    JavaScriptCore    WTF::fastFree(void*)
1.8%    1.8%    JavaScriptCore    WTF::fastMalloc(unsigned long)
1.4%    1.4%    WebCore    WebCore::CSSStyleSelector::applyProperty(int, WebCore::CSSValue*)
1.3%    1.3%    WebCore    void WebCore::Private::addChildNodesToDeletionQueue<WebCore::Node, WebCore::ContainerNode>(WebCore::Node*&, WebCore::Node*&, WebCore::ContainerNode*)
1.3%    1.3%    WebCore    WebCore::MarkupTokenizerBase<WebCore::HTMLToken, WebCore::HTMLTokenizerState>::InputStreamPreprocessor::advance(WebCore::SegmentedString&, int&)
1.2%    1.2%    WebCore    void WebCore::removeAllChildrenInContainer<WebCore::Node, WebCore::ContainerNode>(WebCore::ContainerNode*)
1.1%    1.1%    JavaScriptCore    WTF::AtomicString::add(unsigned short const*, unsigned int)
1.1%    1.1%    JavaScriptCore    WTF::AtomicString::addSlowCase(WTF::StringImpl*)
1.1%    1.1%    WebCore    WebCore::SelectorChecker::checkOneSelector(WebCore::CSSSelector*, WebCore::Element*, WebCore::PseudoId&, bool, WebCore::SelectorChecker::VisitedMatchType, WebCore::RenderStyle*, WebCore::RenderStyle*) const
0.9%    0.9%    WebCore    WebCore::visitedLinkHash(WebCore::KURL const&, WTF::AtomicString const&)
0.9%    0.9%    JavaScriptCore    WTF::TCMalloc_Central_FreeList::FetchFromSpansSafe()
0.9%    0.9%    WebCore    WebCore::HTMLTreeBuilder::processStartTagForInBody(WebCore::AtomicHTMLToken&)
0.9%    0.9%    WebCore    WebCore::CSSStyleSelector::adjustRenderStyle(WebCore::RenderStyle*, WebCore::RenderStyle*, WebCore::Element*)
0.7%    0.7%    WebCore    WTF::HashMap<WebCore::RenderBoxModelObject const*, WebCore::RenderBoxModelObject*, WTF::PtrHash<WebCore::RenderBoxModelObject const*>, WTF::HashTraits<WebCore::RenderBoxModelObject const*>, WTF::HashTraits<WebCore::RenderBoxModelObject*> >::get(WebCore::RenderBoxModelObject const* const&) const
0.7%    0.7%    WebCore    WebCore::HTMLConstructionSite::insertTextNode(WTF::String const&, WebCore::WhitespaceMode)
0.7%    0.7%    libSystem.B.dylib    __memcpy
0.7%    0.7%    WebCore    WebCore::CSSStyleSelector::styleForElement(WebCore::Element*, WebCore::RenderStyle*, bool, bool, WebCore::RenderRegion*)
0.7%    0.7%    JavaScriptCore    WTF::TCMalloc_Central_FreeList::RemoveRange(void**, void**, int*)
0.7%    0.7%    WebCore    WebCore::SelectorChecker::fastCheckSelector(WebCore::CSSSelector const*, WebCore::Element const*) const
0.7%    0.7%    WebCore    WebCore::SegmentedString::operator=(WebCore::SegmentedString const&)
0.6%    0.6%    JavaScriptCore    WTF::TCMalloc_Central_FreeList::ReleaseListToSpans(void*)
0.6%    0.6%    WebCore    WebCore::RenderObject::RenderObject(WebCore::Node*)
0.6%    0.6%    WebCore    void WebCore::CSSStyleSelector::applyDeclaration<true>(WebCore::CSSMutableStyleDeclaration*, bool, bool)
0.6%    0.6%    WebCore    WebCore::CSSStyleSelector::matchRules(WebCore::RuleSet*, int&, int&, bool)
0.6%    0.6%    WebCore    WTF::HashMap<WTF::AtomicStringImpl*, WTF::OwnPtr<WTF::Vector<WebCore::RuleData, 0ul> >, WTF::PtrHash<WTF::AtomicStringImpl*>, WTF::HashTraits<WTF::AtomicStringImpl*>, WTF::HashTraits<WTF::OwnPtr<WTF::Vector<WebCore::RuleData, 0ul> > > >::get(WTF::AtomicStringImpl* const&) const
0.6%    0.6%    WebCore    WebCore::ContainerNode::detach()
0.6%    0.6%    libSystem.B.dylib    pthread_getspecific
0.6%    0.6%    WebCore    WebCore::QualifiedName::init(WTF::AtomicString const&, WTF::AtomicString const&, WTF::AtomicString const&)
0.6%    0.6%    WebCore    WebCore::AtomicHTMLToken::AtomicHTMLToken(WebCore::HTMLToken&)
0.5%    0.5%    WebCore    WebCore::RenderObjectChildList::appendChildNode(WebCore::RenderObject*, WebCore::RenderObject*, bool)
0.5%    0.5%    WebCore    WebCore::Text::~Text()
0.5%    0.5%    WebCore    WebCore::HTMLSourceTracker::start(WebCore::HTMLInputStream const&, WebCore::HTMLToken&)
0.5%    0.5%    WebCore    WebCore::Element::setAttributeMap(WTF::PassRefPtr<WebCore::NamedNodeMap>, WebCore::FragmentScriptingPermission)
0.5%    0.5%    WebCore    WebCore::mergeDoubleSlashes(WTF::Vector<unsigned short, 512ul>&, unsigned long)
0.5%    0.5%    WebCore    WebCore::RenderObject::setStyle(WTF::PassRefPtr<WebCore::RenderStyle>)
0.5%    0.5%    WebCore    WebCore::HTMLTreeBuilder::constructTreeFromAtomicToken(WebCore::AtomicHTMLToken&)
0.5%    0.5%    WebCore    WebCore::RenderText::RenderText(WebCore::Node*, WTF::PassRefPtr<WTF::StringImpl>)
0.5%    0.5%    WebCore    WebCore::Document::removeAllEventListeners()
0.5%    0.5%    WebCore    WebCore::HTMLTreeBuilder::constructTreeFromToken(WebCore::HTMLToken&)

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list