Mars , ich zitiere mich mal selbst aus diesem Thread:
Ich konnte die Ergebnisse von dir verifizieren, plus minus 10-20% in den Zeiten sehe ich bei diesen Laufzeiten der Scripte bei AutoIt einfach mal als "gleich" an^^
AutoIt ist ein Interpreter, die Ausführungsgeschwindigkeit von programminternen Vorgehensweisen ist also primär vom Skill des Programmierers/Developers und der von ihm verwendeten Werkzeuge/Funktionen/Frameworks des Interpreters abhängig, s. dazu auch Post #27, letzter Absatz!
Natürlich hast du recht, wie AspirinJunkie übrigens auch.
Die "Intention", einen Datenwert in einer (im Speicher stehenden) Liste über einen Index abzurufen, ist bei sämtlichen dieser Methoden gleich. Aus Prozessorsicht ist das, auch bei "verketteten" Listen, eine Sache von einer Handvoll Prozessortakte, also quasi nicht messbar!
Ein interpretierter AutoItcode ist, und das weist du ziemlich gut , ca. 1000x langsamer bei Rechenfunktionen in (verschachtelten) Schleifen als entsprechender compilierter Code. Da spielen derart viele Faktoren in die Ausführungszeit rein...s. dein 2. Chart Mapzeit/Arrayzeit...die "Peaks" bei Vektorlänge 16 und 20 sind ggf. irgendwelche Festplattenzugriffe, schicken des Prozessors in den Stromsparmodus (ja, WÄHREND des Benchmarks^^) uswusf.
Der Overhead beim Benchen muss dementsprechend so niedrig wie möglich gehalten werden, macht aber, und das ist ja einfach nachzuweisen, im vorliegenden Fall KEINEN Unterschied....
Wenn es also wirklich auf Geschwindigkeit ankommt (und das meine ich nur im Bezug zu den auch hier im Forum von mir befürworteten Wettbewerben), dann MUSST du die schnellste Methode/Programmieridee verwenden:
Das die System.Collections.Hashtable nun aus dem Test herausgefallen ist, hat aber auch einen positiven Aspekt: Nun ist meine in purem AutoIt geschriebene Hashtable nun offiziell die schnellste Datenstruktur beim Lesen aus assoziativen Strukturen bei 1 Million Elementen!
WZBW!!!