[webkit-dev] DOM tree traversal on detached nodes
Geoffrey Garen
ggaren at apple.com
Mon Jun 11 21:23:27 PDT 2012
> Actually I've tried the approach yesterday but confirmed 25.9%
> performance regression, even if I have TreeShared hold a pointer to
> the root. Please look at the WIP patch and the performance test in
> https://bugs.webkit.org/show_bug.cgi?id=88834.
>
> What I've learned is that we must not insert any line to ref() and
> deref(), which are performance sensitive:)
I don't take away the same lesson.
The WIP patch you posted has these performance issues:
- adds 2 data members to every node, increasing malloc cost and memory traffic
- adds a call to fprintf inside ref() and deref(), probably making them ineligible for inlining
- does a test against "!m_parent" in rootDeref, which can be removed
Also, does your benchmark, with this patch attached, ever tear down a DOM tree? You haven't changed any of the other document tear-down machinery to match, so you're still paying the cost of lots of irrelevant tear-down code, and/or possibly leaking lots of memory.
To test your "ref is sacred" theory on this benchmark, just insert this one line of code into ref():
document()->ref();
This is a memory leak, but it will make it through your benchmark without crashing, and give you a ballpark performance test of the design I described.
Geoff
More information about the webkit-dev
mailing list