Markus: Performance Problem mit document.write bei refresh/onload

Hallo zusammen,

bin gerade am Testen der Performance und bin dabei auf folgendes Problem gestossen. Wenn ich das folgende JS beim erstenmal ausführe, braucht es ca. 3-4 Sekunden. Wenn ich dann ein reload der Seite mache, bracht es über 20 Sek.

<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=utf-8">

<script type="text/javascript">
function perfTest() {
 document.open("text/html");
 document.writeln(new Date() + '<br />');
 var arr = new Array();
 for (var b = 0; b < 100001; b+=1) {
  arr.push('<p>' +b  +  ' abcdefghijklmnopqrstuvwxyz----</p><br />' );
 }
 document.writeln(arr.join(''));
 document.writeln(new Date() + '<br />');
 document.close();
}
</script>

</head>
<BODY onload="perfTest();">
</body>
</html>

Hat jemand einen Tipp für mich ?

Schon mal Danke
Markus

  1. Hallo zusammen,

    bin gerade am Testen der Performance und bin dabei auf folgendes Problem gestossen. Wenn ich das folgende JS beim erstenmal ausführe, braucht es ca. 3-4 Sekunden. Wenn ich dann ein reload der Seite mache, bracht es über 20 Sek.

    Bei mir zuerst 30 Sekunden, nach einem Neuladen "nur noch" 20 Sekunden.

    Hat jemand einen Tipp für mich ?

    Einen Tipp wozu?

    1. "Bei mir zuerst 30 Sekunden, nach einem Neuladen "nur noch" 20 Sekunden."
      Das schafft ja mein 3 Jahre alter PDA schneller ;-)

      "Hat jemand einen Tipp für mich ?"
      Na rate mal ;-).
      Mich wundert es halt, das er für einen Reload über 500% länger braucht.
      Dachte vielleicht könnte ich das bereits existierende Dokument irgendwie schneller löschen (onBlur=xxx).

      Gruß
      Markus

  2. Hallo Markus,

    ... erstenmal ausführe, braucht es ca. 3-4 Sekunden. ...

    das dürfte stak Browserabhängig sein.

    ... reload der Seite mache, braucht es über 20 Sek.

    Ich vermute, das die 100001 Zeilen erst mal gelöscht werden müssen, was je nach Browser unterschiedlich lange dauert.

    Hat jemand einen Tipp für mich ?

    Nach meiner Erfahrung gehen die DOM-Methoden, also createElement, appendChild, etc. schneller. Aber du solltest dir darüber im klaren sein, dass du etwas versuchst, für das die Browser nicht gedacht sind.

    Gruß, Jürgen

    PS Als ich diese seite gemacht habe, dachte ich noch, irgendwann kommt ja die 6 GHz-CPU. Aber nein, die mussten ja in Richtung "Multi-Core" gehen, und fast keine Software unterstützt diese.

    1. Hallo,

      "Nach meiner Erfahrung gehen die DOM-Methoden, also createElement, appendChild, etc. schneller."

      Werde ich auf alle Fälle mal versuchen.. danke für den Tipp.

      " Aber du solltest dir darüber im klaren sein, dass du etwas versuchst, für das die Browser nicht gedacht sind."

      Jop ;-) Geht aber schon mal schneller, als ein "fertiges" html zu übertragen.. zumindest in meinem Fall, da ich einige Infos doppelt im html benötige.

      Danke
      Markus