Ergebnis 1 bis 12 von 12
  1. #1
    Yogilein ist offline Tripel-As
    registriert
    06-02-2014
    Beiträge
    192

    Ist JS langsamer, wenn es über das Netz aufgerufen wird

    Hallo,

    heute ist mir folgendes aufgefallen:

    rufe ich mit FF (neueste Version) mein neuestes Spiel direkt ohne Netz auf (file:///...) und umrunde einmal das Spielfeld, benöte ich 7s. Mache ich das Gleiche übers Web (www - SpeedParking (internetted by ID.KOM)....) brauche ich 10s, also über 40% länger.

    Das verstehe ich überhaupt nicht, denn zu diesem Zeitpunkt ist doch alles komplett geladen.

    Bei Chrome z.B. ergibt sich kein Unterschied: jedesmal 7s.

    Daher meine Frage: Wieso braucht FF übers Netz soviel länger?

    PS: Ich habe dies ins Unterforum Javscript geschrieben, da meine Bewegung über JS relisiert wird.
    ------------------
    Liebe Grüße
    Yogilein
    Meine Javascript-Spieleseite: http://www.YogiSpiele.de
    Meine Fotoseite mit dem kostenlosen Besucherzähler: https://www.YogiFotos.de

  2. #2
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.687

    AW: Ist JS langsamer, wenn es über das Netz aufgerufen wird

    Das einzige, was ich mir vorstellen kann ist, dass die beiden Versionen doch nicht 100%ig gleich sind und in der online-Version noch irgendwas anderes mit ausgeführt wird.

    Zitat Zitat von Yogilein Beitrag anzeigen
    Wieso braucht FF übers Netz soviel länger?
    Ohne Code und Link können wir da auch nichts konkretes sagen.

  3. #3
    Yogilein ist offline Tripel-As
    registriert
    06-02-2014
    Beiträge
    192

    AW: Ist JS langsamer, wenn es über das Netz aufgerufen wird

    Nein, beide Testversionen sind zu 100% identisch.

    Die finale Echtversion ist in PHP, aber das dürfte auch nichts ausmachen, da das PHP auf dem Server ausgeführt wird.

    Und jetzt kommt's: Gerade übers Netz mit dem uralten Safari für Windows getestet: 7s.

    Ebenfalls 7s: Chrome, Edge und Opera

    Nur FF braucht 10s übers Netz.
    ------------------
    Liebe Grüße
    Yogilein
    Meine Javascript-Spieleseite: http://www.YogiSpiele.de
    Meine Fotoseite mit dem kostenlosen Besucherzähler: https://www.YogiFotos.de

  4. #4
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.689

    AW: Ist JS langsamer, wenn es über das Netz aufgerufen wird

    wundert mich nicht. ff ist eh so ein spezialist...
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png
    Sorry wenn ich manchmal ohne Hallo und nur klein schreibe! Dann bin ich nicht unfreundlich sondern mit nervigem kleinem Touch Tablet zugange

  5. #5
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.687

    AW: Ist JS langsamer, wenn es über das Netz aufgerufen wird

    Zitat Zitat von Yogilein Beitrag anzeigen
    Nur FF braucht 10s übers Netz.
    Für was? Ist dein FF-Profil sauber?

  6. #6
    Yogilein ist offline Tripel-As
    registriert
    06-02-2014
    Beiträge
    192

    AW: Ist JS langsamer, wenn es über das Netz aufgerufen wird

    Zitat Zitat von kkapsner Beitrag anzeigen
    Für was? Ist dein FF-Profil sauber?
    Wie gesagt, für eine Umrundung bei meinen neuesten Spiel: YogiSpiele - Minenfeld

    Was sollte an meinem FF-Profil sein? Das gleiche Spiel, der gleiche FF, aber ohne Internetanbindung 7s wowie alle anderen Browser und übers Netz 10s (alle anderen Browser: 7s).
    ------------------
    Liebe Grüße
    Yogilein
    Meine Javascript-Spieleseite: http://www.YogiSpiele.de
    Meine Fotoseite mit dem kostenlosen Besucherzähler: https://www.YogiFotos.de

  7. #7
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.689

    AW: Ist JS langsamer, wenn es über das Netz aufgerufen wird

    ich würde ff trotzdem zurücksetzen: https://support.mozilla.org/de/kb/Be...-zuruecksetzen
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png
    Sorry wenn ich manchmal ohne Hallo und nur klein schreibe! Dann bin ich nicht unfreundlich sondern mit nervigem kleinem Touch Tablet zugange

  8. #8
    Yogilein ist offline Tripel-As
    registriert
    06-02-2014
    Beiträge
    192

    AW: Ist JS langsamer, wenn es über das Netz aufgerufen wird

    Jetzt wird's komisch.

    FF zurückgesetzt und siehe da: Eine Umrundung übers Netz = 7s

    aber

    die Entwickler-Symbolleiste zeigte mir unendlich viele Fehler an ---> Schreck

    aber

    alle Fehler waren nur Warungen das CSS betreffend, da FF nicht alle Anweisungen versteht, u.a. best. Pseudoklassen oder Anweisungen wie z.B. "-webkit-user-select:none;"

    Daraufhin habe ich FF erneut zurückgesetzt und Gott sei Dank, es kommen keine Fehlermeldungen mehr,

    aber

    eine Umrundung dauert wieder 10s.
    ------------------
    Liebe Grüße
    Yogilein
    Meine Javascript-Spieleseite: http://www.YogiSpiele.de
    Meine Fotoseite mit dem kostenlosen Besucherzähler: https://www.YogiFotos.de

  9. #9
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.687

    AW: Ist JS langsamer, wenn es über das Netz aufgerufen wird

    Zitat Zitat von Yogilein Beitrag anzeigen
    aber ohne Internetanbindung
    Wirklich gar keine Verbindung oder Seite einfach nur lokal geladen?

    Zitat Zitat von Yogilein Beitrag anzeigen
    Jetzt wird's komisch.
    Da hast du Recht.

    Aber die Wiederholungsrate von keydown würde ich auch nicht für deine Animation/Bewegung verwenden. Ich würde eher so etwas machen, dann ist das immer gleich schnell - auch wenn der Browser mal kurz hängt:
    Code:
    <!DOCTYPE html>
    
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Fenstertitel</title>
    <script type="text/javascript" src="//kkjs.kkapsner.de/modules/kkjs.load.js"></script>
    <style type="text/css">
    #kugel {
    	border: 1px solid darkred;
    	background-color: red;
    	border-radius: 100%;
    	width: 20px;
    	height: 20px;
    	position: absolute;
    	top: 200px;
    	left: 200px;
    	transition-property: top left;
    	transition-duration: 0.1s;
    	transition-timing-function: linear;
    }
    </style>
    </head>
    <body>
    <div id="kugel"></div>
    <script type="text/javascript">
    (function(){
    	var k = kkjs.$("kugel");
    	var keysDown = {
    		up: false,
    		down: false,
    		left: false,
    		right: false,
    		count: 0
    	};
    	
    	["up", "down", "left", "right"].forEach(function(dir){
    		kkjs.event.add.key(document, dir, "down", function(){
    			if (!keysDown[dir]){
    				var wasFirstKey = keysDown.count === 0
    				keysDown[dir] = true;
    				keysDown.count += 1;
    				if (wasFirstKey){
    					startAnimation();
    				}
    			}
    		});
    		kkjs.event.add.key(document, dir, "up", function(){
    			if (keysDown[dir]){
    				keysDown[dir] = false;
    				keysDown.count -= 1;
    				if (keysDown.count === 0){
    					stopAnimation();
    				}
    			}
    		});
    	});
    	
    	var p = new kkjs.Math.Position(200, 200);
    	function move(){
    		if (keysDown.up) p.top -= 20;
    		if (keysDown.down) p.top += 20;
    		if (keysDown.left) p.left -= 20;
    		if (keysDown.right) p.left += 20;
    		kkjs.css.set(k, p);
    	}
    	
    	var frameDuration = 100;
    	var lastCall = false;
    	function frameScript(){
    		if (lastCall){
    			var now = Date.now();
    			while (now - lastCall >= frameDuration){
    				lastCall += frameDuration;
    				move();
    			}
    			window.requestAnimationFrame(frameScript);
    		}
    	}
    	function startAnimation(){
    		lastCall = Date.now() - frameDuration;
    		frameScript();
    	}
    	function stopAnimation(){
    		lastCall = false;
    	}
    }());
    </script>
    </body>
    </html>

  10. #10
    Yogilein ist offline Tripel-As
    registriert
    06-02-2014
    Beiträge
    192

    AW: Ist JS langsamer, wenn es über das Netz aufgerufen wird

    Vielen Dank für die großartige Lösung.

    Allerdings schaffe ich es nicht, sie in mein Spiel einzubauen. Liegt wohl an meiner Clousure-Struktur. Daher werde ich eine abgespeckte Version einbauen, die ich bereits ausgetestet hatte, aber nicht das FF-Problem beseitigte.

    Bei meiner Funktion muss ich leider mit setTimeout arbeiten, da irgendwie das requestAnimationFrame nicht funktioniert.

    Bez. meines FF-Problems bin ich etwas weitergekommen:

    Ich habe bei jeder Bewegung, also bei einer Umrundung 134 mal die Anzeige der Minen aktualisiert. Aktualisiere ich nur noch, wenn sich der Wert geändert hatdauert eine Umrundung übers Netz 7s.

    Nur, das verstehe ich nicht, denn eine Aktualisierung der Anzeige mit Child.NodeValue dauert in einer 10000er-Schleife nur 1ms (zum Vergleich: innerHTML = 21ms). Warum benötigen dann 134 Aktualisierungen 3s??? Und warum auch nur dann, wenn es über das Netz geht??? Was mach da FF nur???

    Und außerdem zeigt FF wieder permanet Fehler an, obwohl es nur Warnungen sind. Hoffentlich kommt bald ein Update.

    Und, ich habe dieses Verhalten jetzt auf 3 unterschiedlichen Rechnern getestet, immer mit dem gleichen Ergebnis.
    ------------------
    Liebe Grüße
    Yogilein
    Meine Javascript-Spieleseite: http://www.YogiSpiele.de
    Meine Fotoseite mit dem kostenlosen Besucherzähler: https://www.YogiFotos.de

  11. #11
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.687

    AW: Ist JS langsamer, wenn es über das Netz aufgerufen wird

    Zitat Zitat von Yogilein Beitrag anzeigen
    Ich habe bei jeder Bewegung, also bei einer Umrundung 134 mal die Anzeige der Minen aktualisiert. Aktualisiere ich nur noch, wenn sich der Wert geändert hatdauert eine Umrundung übers Netz 7s.
    Das klingt doch nach einer guten Lösung.

    Zitat Zitat von Yogilein Beitrag anzeigen
    Warum benötigen dann 134 Aktualisierungen 3s??? Und warum auch nur dann, wenn es über das Netz geht??? Was mach da FF nur???
    Alles gute Fragen, auf die wahrscheinlich nur jemand, der tief in der FF-Engine (Gecko) drin ist, Antworten hat...

  12. #12
    Yogilein ist offline Tripel-As
    registriert
    06-02-2014
    Beiträge
    192

    AW: Ist JS langsamer, wenn es über das Netz aufgerufen wird

    Ich bin mir jetzt ziemlich sicher, das FF-Problem erkannt zu haben. Es scheint mal wieder am Rendern zu liegen. Ich kann in die Schleife 100 Befehle packen, und es funktioniert weiterhin. Aber sobald ich einen Befehl mit einer Bildschirmausgabe hineinpacke, fängt FF an zu stottern, selbst wenn der Befehl nur den Bruchteil eine Millisekunde benötigt. Ich habe jetzt schon alles ausprobiert, um das zu verhindern, ich schaffe es nicht.

    Was ich gemacht habe:

    • Ausgabe per firstChild.nodeValue ode innerHTML
    • Den Ausgabebefehl in eine eigene Funktion gepackt
    • Den Ausgabebefehl über setTimeout aufgerufen


    Alles hat nichts gebracht, wobei sonderbarerweise es ohne Netz immer geht, also wenn ich das Spiel direkt vom Laufwerk aus starte. Ich vermute, dass Firefox in diesem Fall, warum auch immer, anders rendert.

    Momentan habe ich meine eigene Variante eingebaut, die nicht mehr von der Tatsturwiederholrate abhängig ist. Diese bleibt nur noch immer dann kurz hängen (fast kaum merkbar), wenn ich meine Anzeige aktualisieren muss. Optimal ist es noch nicht, aber vielleicht komme ich irgendwann auf die ultimative Lösung.
    ------------------
    Liebe Grüße
    Yogilein
    Meine Javascript-Spieleseite: http://www.YogiSpiele.de
    Meine Fotoseite mit dem kostenlosen Besucherzähler: https://www.YogiFotos.de

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 03-05-2014, 12:42
  2. Funktion wird nicht aufgerufen
    Von Max Dhom im Forum JavaScript
    Antworten: 7
    Letzter Beitrag: 19-02-2009, 16:50
  3. Funktion wird nicht aufgerufen
    Von mr.jones im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 09-12-2007, 13:17
  4. Antworten: 16
    Letzter Beitrag: 25-04-2006, 00:00
  5. statistik über datenbanken im netz
    Von womstar im Forum Smalltalk
    Antworten: 1
    Letzter Beitrag: 23-01-2004, 16:41

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •