Gibt es einen Weg zu "netter" JavaScript-Ausführung?

8

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?

    
shino 24.04.2010, 08:28
quelle

5 Antworten

3

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.

    
miensol 24.04.2010 08:31
quelle
3

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.

    
Aristos 24.04.2010 09:01
quelle
2

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.

    
austin cheney 24.04.2010 08:35
quelle
1

Ich habe ein paar Tests gemacht, und der Browser braucht ziemlich viel Zeit zwischen Arbeitsausbrüchen, um einigermaßen reaktionsschnell zu sein:

%Vor%     
Guffa 24.04.2010 08:50
quelle
1
  1. führe die Berechnung auf dem Server mit einer Ajax-Anfrage durch
  2. öffne ein neues Fenster oder einen Rahmen und führe den Code dort aus
  3. Führe den Code in einer Schleife aus, die in Intervalle unterteilt ist
  4. bereit sein, Web-Worker-Prozesse (html5 asynchrones Skript)
  5. zu verwenden
kennebec 24.04.2010 14:08
quelle

Tags und Links