Daniel Thoma: Rekursion vs. Iteration, Mathematische vs. Listen-Operationen

Beitrag lesen

Hallo Struppi,

Naja, Modulo ist ja eine Division die ja bekanntlich die teuersten Operationen auf einem Rechner sind, während Strings ja nichts weiter als Zeiger auf Speicherketten sind, die eigentlich recht schnell durchlaufen werden können.

Das Problem ist, dass Du erstmal aus der binärzahl einen String machen musst. Der Algorithmus für solche Umwandlungen macht im wesentlichen diese modulo-Operationen. Damit braucht das erzeugen des Strings allein schon mindestens so viel Operationen, wie die eigentliche Rechnung. Um die einzelnen Stellen zu summieren müssen dann Zeichen bzw ein Zeichen lange Strings, weil Javascript da wahrscheinlich gar nicht groß unterscheidet, wieder in Zahlen gewandelt werden. Außerdem braucht so ein String natürlich mehr Speicher als so eine Zahl, die Zahl passt in ein oder zwei Register, bei Strings dürfte da viel mehr rumkopiert werden müssen. Wobei man Aussagen auf der Ebene bei Scriptsprachen schlecht treffen kann, weil man nie so genau weiß, was ein Interpreter so alles tut um etwas auszuführen... Deswegen war ich auch vorsichtig mit Geschwindigkeitaussagen. Es könnte durchaus mal passieren, dass in der Scriptsprache irgendwas so langsamer ist, dass die Stringoperation, die in irgendwelchen Bibliotheken implementiert sind, schneller sind.

Grüße

Daniel