045
27.07.2003, 16:54 Uhr
virtual
Sexiest Bit alive (Operator)
|
Ich habe keine Pascalcompiler installiert, daher nehme ich mal das C++ von Spacelord als Referenz und sage mal großzügig: Psacl sit im den Faktor 8 schneller als das C++ teil. Das macht bei mir:
C++: |
time a.out >/dev/null
real 0m14.997s user 0m14.170s sys 0m0.250s
|
(Habe die Ausgabe direkt umgeleitet, weil ich ka nicht die Geschwindigkeit des X Servers messen will, sondern die geschwindigkeit, wie schnell das Ding Den String generiert und in den Ausgabekanal pumpt.) Wie schon mehrfach erwähnt sollte man C++ Streams nicht benutzen, wenn man nun wirklich auf Performance schaut. Folgendes simples C++ Programm läßt den pascal locker hinter sich:
C++: |
#include <stdio.h>
int main() { char buf[100]; for(int i=0;i<=1000000;i++) { printf(buf, "Hallo, World %d\n", i); } return 0; }
|
macht:
C++: |
joe@ebola:~/tmp> time a.out >/dev/null
real 0m1.412s user 0m1.350s sys 0m0.010s
|
schätzungsweise ist das um den Faktor 10.5 schneller als der Schlechte C++ Code von davor (ganz ohne jede Optimierung). Und selbst wenn es Dich in Richtig C++ Streams ziehen sollte, dann hast Du da auch noch optimierungspotential: 1. Vermeide std::endl, weil das immer ein flush macht. Nimm stattdessen '\n' 2. Vermeide den op<<, n8imm stattdessen write/put. Ich habe das jetzt nich nachgemessen, sollte aber ähnlich langsame Resultate wie Pascal liefern. Wenn es um Performance geht, würde ich also sagen. 1. C 2. C++ 3. Pascal -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) Dieser Post wurde am 27.07.2003 um 16:55 Uhr von virtual editiert. |