Wenn das Javascript lahmt, gibt es viele Ansätze um die Performance zu verbessern – smarte Schleifen, Scope-Optimierung, Closure-Diät und kürzere Ketten beim Objektzugriff (foo.bar ist flotter als foo.bar.blubb.blah). Dass all das zwar Geschwindigkeit bringt, jedoch in 99% aller Fälle nicht das Problem ist, an dem man arbeiten sollte, sollte eigentlich das in aller Länge un Breite ausformulierte Thema dieses Beitrags werden, doch dann flatterte dieses schöne Video vorbei. Hier referieren Nicholas Zakas, Stoyan Stefanov, Ross Harmes, Julien Lecomte und Matt Sweeney über das, was sie in diesem schönen Buch geschrieben haben – High Performance Javascript eben.

In dem Video werden viele Wege der JS-Optimierung beschrieben, aber die besten Zahlen führt eindeutig Stoyan Stefanov in seinem Vortag über das DOM zu Felde: bei unbedachter Arbeit am DOM-Tree hat man selbst im besten Browser Glück, wenn man sein Script nur 20× so langsam macht, wie es sein könnte. Das heißt: sofern man Javascript im Browser verwendet und damit Animationen und ähnliches umsetzt (was wohl so um die 99% aller Anwendungsfälle ausmacht), ist der Flaschenhals, um den man sich vorrangig kümmern sollte, das DOM.

Der geschwindigkeitsbringende Umgang mit dem DOM ist dabei ganz einfach, sofern man zwei Regeln befolgt:

  1. So wenige DOM-Operationen jedweder Art durchführen wie möglich
  2. Fleißig documentFragment verwenden (Details)

Stefanov hat noch 8 weitere Regeln im Angebot (siehe Buch und Video) doch allein mit diesen beiden kann man die meisten Scripts schon erheblich beschleunigen. Wenn man also auf der Fahndung nach Javascript-Performance ist, sollte man im DOM anfangen zu suchen. Für Otto Normalwebworker, der nur hin und wieder ein paar Animationen und Ajax-Requests zu basteln hat, sind all die anderen Optimierungen zwar auch interessant (deshalb Video schauen und Buch lesen!), aber wenn das Script lahmt, liegt das Problem doch oftmals woanders.

Ebenfalls zum Thema und überaus ansehenswert, falls noch unbekannt: Speed Up Your JavaScript, ebenfalls von und mit Nicholas Zakas.