But If I do getElementsByClass()[0], and LiveNodeList is immediately garbage collectable, then if I change the DOM, Blink won't traverse ancestors, thus no penalty for DOM mutation?
> On Apr 28, 2015, at 2:28 PM, Elliott Sprehn <espr...@chromium.org> wrote: > > > > On Mon, Apr 27, 2015 at 11:13 PM, Glen Huang <curvedm...@gmail.com > <mailto:curvedm...@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 <curvedm...@gmail.com >> <mailto:curvedm...@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? > >