Wie schon oft wiederholt, zählt in erster Linie das Verfahren, also der Algorithmus.
Ich beschäftige mich gerade mit String-Matching-Algorithmen, und hier scheint es hingegen so zu sein, das C(++) die generischen Schleifen und Vergleiche vielleicht doch besser in Maschinencode abbilden kann.
Es ist nämlich so, das sich die offensichtlich besten Algorithmen nicht als Ebensolche in Delphi umsetzen lassen.
Hier hat bisher (bei meinen Ansätzen), ein sehr kompakter Algorithmus (QS) die Nase bei weitem vorn. Vermutlich vor Allem deshalb, weil die zentrale Funktion (vergleich von zwei Teilstrings) als 'CompareMem' abgebildet ist.
Bei dem Algorithmus, der derzeit die Nase vorn hat (FJS), wird der Vergleich über eine generische C-Schleife abgebildet. Wenn ich diesen FJS in Delphi übersetze, ist er um ein vielfaches langsamer als der QS-Algorithmus. Und ich glaube, es liegt an der Verwendung des CompareMem im QS-Algorithmus. Von der Komplexität ('Big
Oh') ist der FJS einfach besser. Nebenbei: Auch Boyer-Moore, Horspool etc. können dem QS (QuickSearch von Daniel Sunday) unter Delphi nicht das Wasser reichen.
Ich meine, bei diesen generischen Schleifen und Vergleichen dürften die hier beschriebenen CPU-abhängigen Optimierungsmöglichkeiten in den C-Kompilern greifen.
Auf Applikationsebene entscheidet jedoch fast ausschließlich das verwendete Verfahren.
Nach meiner Einschätzung ist C für die Implementierung generischer Algorithmen (String-Matching, Hash, Listen, etc.) besser geeignet.
Auf
OOP-Ebene sollte man
imho auf C++ verzichten.
Zitat von
Mein Bauch:
Mir sind Sprachen suspekt, deren Sprachkonstrukte aus Sonderzeichen bestehen
Abschließend sei noch eins erwähnt: Schnelle Programme schreibt man auch in VB, PHP oder JavaScript, solange das gewählte Verfahren optimal ist.
Zitat von
Bernhard Geyer:
Für Delphi gibt es auch noch das
FastCode-Project. Also falls man hier auch noch ein paar Prozent Geschwindigkeit benötigt und ein paar ruhige Stunden zu integration zur verfügung hat ....
Findest du Steigerungen um den Faktor 3 'ein paar Prozent'?