[Talk-de] JOSM-Geschwindigkeit
Dirk Stöcker
openstreetmap at dstoecker.de
Mi Jan 7 16:54:36 UTC 2009
On Wed, 7 Jan 2009, Martin Koppenhoefer wrote:
>> P.S. Euer Sprachenstreit ist kindisch. Die Unterschiede in der
>> Basisgeschwindigkeit der einzelnen Sprachen sind auf heutigen
>> Plattformen nahezu uninteressant. Auch die Sprachen selbst übrigens.
>> Wichtig sind die Algorithmen.
>
> schade, schon wieder eine andere Meinung, und ich hatte bereits gehofft,
> aus dieser Diskussion wenigstens ein paar Basics ueber den aktuellen
> Stand der Programmiersprachen zu ziehen, aber jetzt weiss ich nicht
> mehr, welcher Meinung ich wirklich trauen kann...
Das war schon immer so. Algorithmen sind das wichtigste und gute
Algorithmen überleben auch die verschiedenen Sprachen.
Nimm mal an zwischen einer schnellen (z.B. C) und einer langsamen (z.B.
Perl als Interpretersprache) liegt ein Faktor von 1:10 für eine identische
Routine. Zwischen zwei Algorithmen können gut und gerne Faktoren von
1:1000000 liegen. Oder sogar eine Änderung der Komplexität, was sich bei
größeren Datenmengen bemerkbar macht.
Durch die Weiterentwicklung der Rechner ist in den letzten Jahren das
Grundniveau so hoch, das fast alle Standardaufgaben problemlos erledigt
werden können. Es gibt natürlich immer noch numerisch sehr aufwendige
Aufgaben, wo es wirklich auf die Sprache ankommt (und die wird es auch in
Zukunft immer geben). Aber für fast alles andere ist die Sprache egal.
Deswegen werden auch immer mehr eigentlich langsamere Sprachen verwendet,
welche aber weniger Aufwand beim Entwickler fordern (z.B. eben Perl) und
damit produktiver sind. Das numerisch aufwendige lagert man dann in eine
Bibliothek aus.
So absolut stimmt obiges hinsichtlich Geschwindigkeit übrigens nicht. Ich
habe vor ein paar Jahren auf dem Amiga mal mit Assembler gegen C gekämpft
und gegen die Optimierung von GCC verloren. Das Ergebnis war dann, dass
ich die Routinen in C geschrieben habe und nachher den Assembler-Code
optimiert habe. Eine pauschale Aussage xxx ist besser als yyy wird
zumindest bei modernen Sprachen nie klappen (und auch ein
Geschwindigkeitsfaktor xxx/yyy ist Unfug).
Fazit: Nimm moderne Sprachen wie Perl, Python, Ruby wenn Du schnell
Ergebnisse haben willst. C, C++ für alles andere. Ich persönlich würde
Java nicht empfehlen, aber bestimmt gibt es auch gute Gründe für Java :-)
Nicht-portable Sprachen sollte man eher vermeiden (außer natürlich das
Ergebnis ist per se nicht portabel).
Ciao
--
http://www.dstoecker.eu/ (PGP key available)
Mehr Informationen über die Mailingliste Talk-de