[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