Hallo!
Ich habe hier ein Skript, welches dazu dient den Inhalt einer Datenbanktabelle im Browser in einer per Javascript
Sortierbaren Tabelle darzustellen. Dazu lade ich mit PHP den Datenbankinhalt in Javascript Arrays und verspachtele
diese dann mit Sortierfunktionen um das Ergebnis über document.write auszugeben.
Klappt auch eigentlich ganz alles ganz gut. Zumindest so lange bis meine Datenbank eine kritische Größe erreicht.
(Liegt ja in der Natur der Sache). Überrascht war ich darüber wo diese Größe beim IE zu liegen scheint:
2D-Array mit 1848 Feldern.
Das erstellen der Siete mit PHP und das laden der JAvaScript Arrays geht echt fix. Genauso das sortieren der Einträge
(insgesamt was in der Größenordnung 20-30ms).
Aber das darstellen!
Ich reduzierte die Codezeilen also auf ein Minimum
[CODE]
...
for(var i = 0; i < Zeilen; ++i)//Zeilen -> Anzahl der darzustellenden Zeilen (im Beispiel ca. 800)
{
...
if(!not) //Sofern die betreffende Zeile überhaupt angezeigt werden soll
{
...
var jetzt = new Date();
Timebase = jetzt.getTime();
for(var j=0; j<spalten;++j) //Spalten -> Anzahl der darzustellenden Spalten (im Beispiel 6)
{
tab += "<td> NOPE </td>";
}
var jetzt = new Date();
Time=jetzt.getTime();
TimeC=TimeC+(Time-Timebase);
...
}
...
}
...
//Und später wird "tab" je nach Verfügbarkeit entweder mit "innerHTML" oder "document.write" ausgegeben
[/CODE]
und bekam diese Ergebnisse für TimeC:
IE 9526ms
Netscape 15ms
Opera <1ms
Während der IE läuft habe ich übrigends eine CPU-Last von 100%. Er tut also wirklich was.
Ich werden de ganze Code umstricken müssen, weil das Skript für eine Intranetapplikation im IE umfeld gedacht ist. Aber
dazu müsste ich ersteinmal verstehen wo dieser eklatante Laufzeitunterschied herkommt.
Ich wusste ja, das Opera schnell ist, aber ist der IE wirklich so langsam? Oder serviere ich nur IE unverträglichen
Code? Aber kann das bei den paar Zeilen überhaupt sein?
Hatte jemand schonmal so ein problem, oder kann es sich einer von euch irgendwie erklären?
Es hoft auf Antwort, euer
Coputer Padawan