W3C home > Mailing lists > Public > public-webapps@w3.org > April to June 2015

Re: Why is querySelector much slower?

From: Elliott Sprehn <esprehn@chromium.org>
Date: Mon, 27 Apr 2015 23:28:32 -0700
Message-ID: <CAO9Q3iK9jN3cYKyRxJt4MT3bF0V+BPosohNAWVGvBLQ2oZ3D0A@mail.gmail.com>
To: Glen Huang <curvedmark@gmail.com>
Cc: public-webapps <public-webapps@w3.org>
On Mon, Apr 27, 2015 at 11:13 PM, Glen Huang <curvedmark@gmail.com> wrote:

> On second thought, if the list returned by getElementsByClass() is lazy
> populated as Boris says, it shouldn't be a problem. The list is only
> updated when you access that list again.

The invalidation is what makes your code slower. Specifically any time you
mutate the tree, and you have live node lists, we traverse ancestors to
mark them as needing to be updated.

Blink (and likely other browsers) will eventually garbage collect the
LiveNodeList and then your DOM mutations will get faster again.

> On Apr 28, 2015, at 2:08 PM, Glen Huang <curvedmark@gmail.com> wrote:
> Live node lists make all dom mutation slower
> Haven't thought about this before. Thank you for pointing it out. So if I
> use, for example, lots of getElementsByClass() in the code, I'm actually
> slowing down all DOM mutating APIs?
Received on Tuesday, 28 April 2015 06:29:43 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 18:14:55 UTC