Hi CK,
Nein, damit bin ich nicht ganz zufreiden. Deine These
begründet schlüssig die Performancegewinne des _ersten_
Scriptaufrufes, aber auch beim dritten, vierten oder
fünfundachzigsten Aufruf ruckelt es bei onLoad="..." noch.Die Tatsache, dass es bei Inline-JS nicht ruckelt, finde ich
schon sehr merkwuerdig.
Allerdings...
Ueberigens kannst du noch Performance gewinnen, indem du das
Ergebnis von document.getElementById() in eine globale
Variable packst. Ich habe die Erfahrung gemacht, dass ein
getElementById() mehr Performance als ein Hash-Lookup oder gar
ein Variablen-Lookup verbraet -- kA, warum.
Schlechte Engine? Nein, im Ernst: Du hast Recht, das ist überall so. Bei meinem neulich gennanten Planetenscript war es auch nur über globalvariablen möglich, die Intervalle stabil zu halten - bei jeder neuen DOM-Anfrage wird das Ding langsamer und nix dreht sich mehr...
Ausserdem reicht es voellig, wenn du das window.setTimeOut auf
1000 setzt. Date ist eh nicht genauer als sekundengenau.
Nein, das ist nicht richtig. Bei non-realtime-OS (was Windows und auch Linux nunmal nicht sind) sind Ruckler in nicht Pseodo-Kernel-Browsern (also all denen, die nicht IE oder Konqueror heißen) bei allen Rechnern unter 1GHz an der Tagesordnung und da kommt es dann alle Nase lang vor, dass die Uhr um _zwei_ Sekunden springt, denn die Funktion an sich dauert auch länger als NULL Milli-Sekunden. Um das zu beheben nehme ich 300-400 ms, da dann in fast jedem Fall um eine Sekunde verändert wird. Wenn die DOM-Engines schneller wären, so könnte man das natürlich hochschrauben, aber meiner Erfahrung nach geht es nicht.
Fabian