molily: Geschwindigkeit von Javascript-Befehlen?

Beitrag lesen

Was ist schneller: Die Verwendung  von switch oder der Aufruf als Funktion?

Vermutlich letzteres, weil der »Property Accessor Operator« bestimmt unglaublich stark optimiert wurde. Ein Unterschied käme vermutlich durch das Aufrufen der Funktion - beim switch hättest du ja alles an einem Ort. Insofern könnte auch letzteres langsamer sein, je nachdem, was die JavaScript-Engine besser optimiert hat.

Wenn du mehr als Vermutungen willst, musst du es halt benchmarken auf den Systemen, auf den es später laufen soll.

Allerdings glaube ich nicht, dass es auf diesen Performance-Unterschied ankommt. switch ist hier vor allem schlechter strukturierter Code. Ich würde ein Objekt mit Funktionsobjekten daran verwenden und dann mit objname die gewünschte Funktion aufrufen. Optimiere nicht dort, wo nicht offensichtlich etwas herauszuholen ist. Wie heißt es so schön: »Premature optimization is the root of all evil.« 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.

Ich schreibe mehrmals hintereinander den Inhalt mittels document.write. Ist es schneller, wenn ich den Inhalt in eine Variable schreibe und zum Schluss einmal mit document.write ausgeben lassen?

Ja. Allerdings können mehrere document.write-Aufrufe dafür sorgen, dass der Anwender schneller die Inhalte sieht. document.write(rechenintensivesScript1()); rechenintensivesScript(rechenintensivesScript2()); ist natürlich »subjektiv« für den Anwender schneller als document.write(rechenintensivesScript1() + rechenintensivesScript2());.

Falls ja, gibt es eine Begrenzung der Länge des Variableninhalts?

Nein, da würde ich mir da keine Sorgen machen.

Es gibt vielleicht Probleme wenn ich da 20 kb an Text reinschreiben will.

Das dürfte kein Problem sein.

Gibt es Geschwindigkeitseinbußen, wenn ich Variablen in einem Array speichere?

Du meinst y usw.?
Im Vergleich zu was, globalen Variablen? Wie würdest du sie denn ohne Array speichern und darauf zugreifen? Wenn du eine Liste hast, kannst du sie nur in einem Array oder Object (das nicht identisch mit dem globalen Objekt ist) abspeichern.

Mathias