[webkit-dev] Feature Announcement: Moving HTML Parser off the Main Thread

Eric Seidel eric at webkit.org
Wed Jan 9 18:00:59 PST 2013


We're planning to move parts of the HTML Parser off of the main thread:
https://bugs.webkit.org/show_bug.cgi?id=106127

This is driven by our testing showing that HTML parsing on mobile is
be slow, and long (causing user-visible delays averaging 10 frames /
150ms).
https://bug-106127-attachments.webkit.org/attachment.cgi?id=182002
Complete data can be found at [1].

Mozilla moved their parser onto a separate thread during their HTML5
parser re-write:
https://developer.mozilla.org/en-US/docs/Mozilla/Gecko/HTML_parser_threading

We plan to take a slightly simpler approach, moving only Tokenizing
off of the main thread:
https://docs.google.com/drawings/d/1hwYyvkT7HFLAtTX_7LQp2lxA6LkaEWkXONmjtGCQjK0/edit
The left is our current design, the middle is a tokenizer-only design,
and the right is more like mozilla's threaded-parser design.

Profiling shows Tokenizing accounts for about 10x the number of
samples as TreeBuilding.  Including Antti's recent testing (.5% vs.
3%):
https://bugs.webkit.org/show_bug.cgi?id=106127#c10
If after we do this we measure and find ourselves still spending a lot
of main-thread time parsing, we'll move the TreeBuilder too. :)  (This
work is a nicely separable sub-set of larger work needed to move the
TreeBuilder.)

We welcome your thoughts and comments.


1. https://docs.google.com/spreadsheet/ccc?key=0AlC4tS7Ao1fIdGtJTWlSaUItQ1hYaDFDcWkzeVAxOGc#gid=0
(Epic thanks to Nat Duca for helping us collect that data.)


More information about the webkit-dev mailing list