Thread Perl und C(++) - wann (und wie) lohnt sich die Kombination?
(5 answers)
Opened by Sven_123 at 2011-07-26 12:07
Mal wieder ein paar grundlegende Fragen.
Ich wollte ein kleines Script schreiben, das mir Dateien erzeugt mit denen andere Programme Atom- und Molekülorbitale plotten können. Im Endeffekt heißt das, die Ergebnisse mehrerer Funktionen mit wechselnden Parametern für eine Anzahl von Punkten im Raum zu berechnen. Das ganze muss recht oft gemacht werden, realistische Werte sind dabei z.B. 1000 Funktionen * 10000 Molekülgeometrien * 100*100*100 Raumpunkte = 10.000.000.000.000 (verrückt - wenn man das so sieht, kann man sich gar nicht vorstellen, dass es überhaupt funktioniert^^) und ich dachte, vielleicht wäre das der richtige Punkt meine Perlkenntnisse dahingehend zu erweitern, mir anzugucken, wie ich C++ in meinem Code nutzen kann. Bevor ich jetzt aber anfang damit rumzuwerkeln: Lohnt es sich überhaupt? V.a. wenn man mit einbezieht, dass meine Programmierkenntnisse in C++ eher beschränkt sind (das ganze umzusetzen ginge sicher, aber was effizientes Programmieren angeht, müsste ich wohl oft raten, was gut und was schlecht ist - andererseits ist das jetzt auch nichts, wo man viel rumtricksen kann, sich über irgendwelche Speicherallokation und sonstiges Gedanken machen muss, sondern im Endeffekt nur ein paar verschachtelte for-Schleifen und stures Rechnen). Generell gibt es, so weit ich das rausbekommen hab drei Möglichkeiten Perl und C++ zu kombinieren. Eine C++-Library einzubinden (XS, oder was ich grad irgendwo gelesen hab SWIG), Inline::C (da weiß ich nichtmal genau, ob C++ funktioniert), sowie Perl in C einzubetten, was aber für mich nicht richtig in Frage kommt, dazu ist der Unterschied in meiner Sprachbewandheit zu groß (womit ich sicher nichts absolutes sagen will!^^). Wenn ich es richtig verstehe, gibt es wiederum drei Gründe, warum eine Scriptsprache wie Perl langsamer ist, als z.B. C:
Bezogen auf die beiden verbleibenden Möglichkeiten heißt das doch, PerlXS böte mir alle drei Vorteile (zumindest, was den C++-Part angeht), während ein C::Inline nur den dritten hat (dafür aber etwas simpler einzubauen ist, so wie ich das gesehen hab). Stimmt das alles so? Und würdet ihr mir dazu raten, oder meint ihr, dass das am Ende doch gar nicht so viel ausmacht? Last edited: 2011-07-26 12:17:03 +0200 (CEST) |