Hallo zusammen!
Der benchmark ist in so fern schlecht, als er das Entscheiden zwischen wenigen Fällen sehr oft testet.
Da ergeben sich natürlich kaum nennenswerte Unterschiede. Wenn ein switch (oder der Objektzugriff) Geschwindigkeitsvorteile bringt, dann bei sehr vielen Fällen.
"Sehr viel" ist da relativ. Es fängt schon bei 11 an signifikant zu werden (je nach dem, was da zu vergleichen ist natürlich)
Außerdem sollte man die Werte so wählen, dass ein Vergleich relativ viel Zeit benötigt.
Das verstehe ich nicht. Was soll das bringen?
Daher noch mal ein anderer Benchmark:
[ Auch 'ne schöneIdee! ;-) ]
Mit dem Mozilla sieht man dann sehr deutlich, dass sowohl if als auch switch in linearer Zeit arbeiten. Allerdings ist switch sehr viel schneller. U.u. wird bei if else konstrukten Rekursion verwendet.
Obj arbeitet in konstanter Zeit, was stark dafür spricht, dass es als Hashtabelle implementiert ist.
Auch einen Baum (wenn auch nicht jeden) kann man in konstanter Zeit durchsuchen.
Aber ein Frage: wenn Du den Mozilla benutzt ist die Wahrscheinlichkeit recht hoch, das Du in den Code schauen kannst. Warum dann diese Vermutungen? Ja, ich weiß, ich kenne ihn, er ist furchtbar ;-)
Aber zumindest die Javascriptimplementation ist recht sauber und auch ganz gut lesbar.
Noch eine Frage: Was soll ein Heap bei der Implementierung von switch bringen?
Ist in diesem Fall zum Sortieren ganz gut geeignet. Aber was für ein Baum das genau ist, kann ich ohne Rücksprache mit dem Code nicht sagen und den habe ich wahrscheinlich nicht hier, da ich mir hinterm Modem sitzend nicht jeden neuen Mozilla sauge ;-)
so short
Christoph Zurnieden
PS:
Math.floor(Math.random() * 10) gibt keine ausreichende Menge an Zufallswerten.
CZ