_Robert: Geschwindigkeit von Javascript-Befehlen?

Beitrag lesen

Wenn dein Script langsam läuft, dann vermutlich nicht wegen diesem einen switch versus Property Accessor und Funktionsaufruf. Sondern wegen DOM-Operationen, schlechten Algorithmen, ineffizientem Event-Handling und so weiter.

Als Event-Handling gibt es nur onmouseover und -out. Damit gibt's auch keine Probleme. Und als DOM-Operation habe ich nur getElementByID im Zusammenhang mit den beiden Events. Ich muss allerdings gestehen, dass die JavScript-Datei momentan eine Größe von 400 kb hat. Aber meiner Meinung nach speilt das nur eine Rolle beim allerersten Aufruf (weil man da warten muss bis es geladen wurde). Was die schlechten Algorithmen betrifft, vielleicht liegt es daran:

Eine Funktion zum Erzeugen von HTML-Code ist bei mir so gestaffelt aufgebaut (einfaches Beispiel):

function erzeuge(i1,i2,i3,i4,i5){
var a=new Array(i1,i2,i3,i4,i5)
for(var i=0;i<a.length;i++){
if(!a[i]){a[i]="&nbsp;"}x.writleln('<p>'+a[i]+'</p>')
}}

function inhalt(){
erzeuge('inhalt1','inhalt2','inhalt3','inhalt4','inhalt5')
erzeuge('inhalt1','inhalt2','inhalt3','inhalt4','inhalt5')
erzeuge('inhalt1','inhalt2','inhalt3','inhalt4','inhalt5')
erzeuge('inhalt1','inhalt2','inhalt3','inhalt4','inhalt5')
erzeuge('inhalt1','inhalt2','inhalt3','inhalt4','inhalt5')
erzeuge('inhalt1','inhalt2','inhalt3','inhalt4','inhalt5')
...
}

So in etwa sieht's aus. In Wirklichkeit enthält die Funktion erzeuge ein paar mehr if-Abfragen. Man könnte der Funktion "erzeuge" natürlich gleich ein Array übergeben, aber in diesem Fall müsste ich a=new Array in jeder Zeile ergänzen. Und das würde die Datei aufpusten. Wieder mal der alte Spagat zwischen Dateigröße und Geschwindigkeit.