die Implemetierung der Hashes scheint nicht sonderlich schnell zu sein, der Vergleich mit einem integer ist auf jeden Fall schneler, als die Suche nach einem String (dem key des Objektes).
Ich weiß nicht, ob man hier wirklich switch versus Property Accessor Operator misst. Kommentiere switch und bewertungen[punkte] mal aus, da bekommst du fast gleiche Resultate.
Firefox 3:
case:...............4154m = 722.195/sekunde.........................
object:.............9097m = 329.779/sekunde.........................
Ohne switch und Property Accessor:
case:...............4214m = 711.912/sekunde.........................
object:.............8865m = 338.409/sekunde.........................
Firefox 3.1 Beta 3 (TraceMonkey):
case:...............3714m = 807.754/sekunde.........................
object:.............6354m = 472.143/sekunde.........................
Ohne switch und Property Accessor:
case:...............3460m = 867.052/sekunde.........................
object:.............6039m = 496.770/sekunde.........................
Chrome (V8):
object:.............974ms = 3.080.082/sekunde.......................
case:...............1034m = 2.901.353/sekunde.......................
Ohne switch und Property Accessor:
object:.............932ms = 3.218.884/sekunde.......................
case:...............1001m = 2.997.002/sekunde.......................
Safari 4 (Squirrelfish Extreme):
case:...............7260m = 413.223/sekunde.........................
object:.............7970m = 376.411/sekunde.........................
Ohne switch und Property Accessor:
case:...............6951m = 431.592/sekunde.........................
object:.............7710m = 389.105/sekunde.........................
Ich vermute, man misst damit das Erzeugen von Objekten beim Variable Object über Objekt-Literale. 99% der Zeit gehen beim case-Testfall wohl für rand() drauf. case selbst fällt dann überhaupt nicht ins Gewicht. Beim object-Testfall kommt noch das teure Objektliteral hinzu, während der Property Accessor wieder nicht ins Gewicht fällt, nehme ich an.
V8 hat offenbar eine extrem schnelle Implementierung von Math (ich musste 3 Millionen Tests wählen, um überhaupt einen Unterschied zu sehen) und optimiert offenbar auch das Erzeugen immer desselben Objektes weg.
Mathias