Ich möchte einige Berechnungen in einem Browserfenster ausführen, aber ich möchte nicht, dass der Clientcomputer für die Benutzerinteraktion verlangsamt wird, insbesondere für Einzelkernmaschinen. Gibt es eine Möglichkeit, das Niveau meines ausführenden JavaScript anzupassen, so dass es so schnell wie möglich ausgeführt wird, ohne die Reaktionsfähigkeit des Rechners zu beeinträchtigen?
Ich kann mir nichts anderes vorstellen, als die Ausführung Ihrer Berechnungen zu verzögern. In einem Beispiel teilen Sie alle Arbeiten in kleine Teile auf und führen sie dann sequenziell mit einer gewissen Verzögerung (unter Verwendung von setTimeout
oder setInterval
) zwischen den einzelnen Aufgaben aus.
Erstellen Sie offene Schleifen ... ein Beispiel
Dies ist eine geschlossene Schleife
%Vor%Dies ist eine offene Schleife
%Vor%Sie können in der offenen Schleife mehr oder weniger arbeiten, aber das ist die allgemeine Idee. Ich habe das schon oft für ähnliche Probleme gemacht und ich habe den Browser sehr flüssig laufen lassen.
Für Geschwindigkeit versuchen, ein einzelnes mehrdimensionales Array zu verwenden, um Ihre Daten und dann am Ende Ihrer Funktion zu enthalten, verwenden Sie einen einzelnen Join, um dieses Array in eine Zeichenfolge für die Ausgabe zu konvertieren und diese Daten mit der innerHTML-Methode auszugeben. Das ist die schnellstmögliche Methode, Daten in JavaScript zu speichern und bereitzustellen. Verwenden Sie keine DOM-Methoden oder -Elemente, um Ihre Daten auszugeben, da dies etwa 4 mal so langsam ist.
Geben Sie Ihre Daten so oft wie möglich aus. Dies wird anhand des Ereignisses bestimmt, das Sie zum Ausführen Ihrer Funktion verwenden. Ich empfehle, das Onload-Ereignis nicht zu verwenden, da dies die Ladezeit Ihrer Seite verlangsamt. Ich würde empfehlen, die onclick-Funktion zu verwenden, die mit einer Schaltfläche verknüpft ist, da der Benutzer dann erkennt, dass sie die Ausführung verursachte, die Ihre Seite verlangsamt.
Tags und Links javascript nice renice