[webkit-dev] Parallel CSS styling

Simon Fraser simon.fraser at apple.com
Mon Jun 6 13:22:01 PDT 2011


Selector matching performance has been improved considerably via
https://bugs.webkit.org/show_bug.cgi?id=49876 and other bugs. With those changes,
I would expect that the win from using threading is rather low.

Simon

On Jun 6, 2011, at 1:16 PM, Kulanthaivel Palanichamy wrote:

> Hi All,
> 
> At Qualcomm Innovation Center we have been working on a parallel algorithm
> for CSS styling and wanted to see if there is any interest in the
> community to see it implemented in WebKit. The overall idea is that we
> replace CSS matching and styling with a parallel implementation assuming
> there is a barrier before and after the computation. CSS style application
> will be performed by the main thread, such that we avoid the need to make
> thread safe data structures accessed in other passes. The algorithm is
> task-based, so we would need to implement a thread pool and a simple task
> scheduler (or maybe use an existing one).
> 
> In particular, our algorithm requires modifying Element::recalcStyle() and
> some of the methods it invokes. Code that calls Element::recalcStyle()
> will not have to be changed. By the time Element::recalStyle() returns,
> all threads involved on the parallel CSS styling have completed their
> execution.  Effectively, there is a barrier when Element::recalcStyle()
> begins and another before it returns.
> 
> Our experiments show that our CSS computation for complex websites scales
> rather well. For example, we observed that, for  flickr.com, Webkit spends
> 75% of its time in CSS doing CSS matching. Thus, our algorithm would give
> a maximum speedup of 1.6X on 2 cores and 2.3X on 4 cores.
> 
> Please let us know whether this would be of interest to the community.



More information about the webkit-dev mailing list