Dass der Zugriff über die collection nicht, wie von mir erwartet, generell schneller ist (zumindest unter Linux) erstaunt mich.
Kann ich unter WIN-XP auch bestätigen. Firefox 1.5 ist hier bei der DOM-Methode deutlich schneller (jedoch insgesamt langsamer). Der Abstand im Opera 9b2 ist gering und im IE6 vernachlässigbar.
bei c = 50000;
JS1.1 vs. JS1.5
1762 : 1412 (FF)
590 : 651 (Opera)
972 : 952 (IE)
Jaja, hier treten wohl irgendwelche Optimierungsprozesse zutage. Ich hab mich auch ein bisschen von einem einem Artikel (ich find ihn gerade nicht) leiten lassen, in dem der Zugriff über document.images[name] empfohlen wird, doch ist dieser langsamer. Da er vielleicht gemappt wird, also umgeleitet, auf die DOM Methoden. Zumindest würde das die Langsamkeit erklären.
window.onload = function()
{
var c = 50000;
var t1, t2;
// Zugriff über doucment.images
t1 = new Date();
for(var i = 0; i < c; i++)
{
var o = document['img'];
var tmp = o.id;
}
t2 = new Date();
alert( t2 - t1);
// Zugriff über doucment.getElementById
t1 = new Date();
for(var i = 0; i < c; i++)
{
var o = document.getElementById('img');
var tmp = o.id;
}
t2 = new Date();
alert( t2 - t1);
}
So sieht die Sache dann anders aus (im HTML Code sind darüber hinaus noch 6 andere Bilder gewesen):
JS1.1 vs. JS1.5
1188 : 1829 (FF)
360 : 515 (Opera 7)
1438 : 1828 (IE)
Wobei mir nicht ganz kalr ist woher die Unterschiede im IE bei dir und mir kommen. Hier mal der Link auf meine Testdatei http://jstruebig.de/web/javascript/test/test.html
Struppi.
Javascript ist toll (Perl auch!)