für die Hochschule sollten wir in Java das Pascalsche Dreieck Rekursiv berechnen lassen. Da es ab Zeile ~37 recht träge wird, haben ein Kollege und ich uns einen Spaß raus gemacht und es mit dem Additionsverfahren umgesetzt. Auch erst in Java. Später noch in C++ und ich habe es noch versucht in C umzusetzen, mittels GMP Lib.
In der Hochschule lief mein C-Programm allerdings deutlich langsamer als die Java-Version. (Man sollte annehmen ein 8-Kerner i7-Prozessor schafft mehr...). Jetzt gerade eben habe ich beide Versionen hier lokal laufen lassen. (AMD Phenom II X4 @3,4 GHz mit 8 GB RAM).
Damit der Vergleich fair ist, habe ich beide Programme hier (ebenso wie in der Hochschule) auf einem 64 bit Windows 7 System ausgeführt.
Ergebnis:
- Java: ~49 sec
C: ~16,5 sec
Ich denke in der C-variante müsste man noch mpz_clear aufrufen, aber wie ich es zuvor gemacht habe, lief es schief. ^^ Könnte also sein, je nachdem wie GMP das handhabt, dass da ein paar Speicherleks sind. *grins*
Hier sind die Quellcodes:
- C: http://debianforum.de/forum/pastebin.ph ... ew&s=37457 (Kompilierzeile: gcc -std=c99 -static pascal.c -L/c/gmp/lib -I/c/gmp/include -lgmp -o pascal)
Java: http://debianforum.de/forum/pastebin.ph ... ew&s=37458
Würde mich über Feedback freuen.
Gruß,
Ctwx