Auslagern in C/C++

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pickarott
User
Beiträge: 5
Registriert: Mittwoch 9. August 2006, 10:30

Ich habe gerade einige Vor- und Nachteile bezüglich Python gelesen und einer der Nachteile ist wohl, dass es bei Performancelastingen Dingen nicht die beste Wahl ist.
Im selben Atemzug wird dann aber von einer Auslagerungsmöglichkeit nach C/C++ gesprochen.

Meine Frage ist nun, wie ich mir ein solches Auslagern vorzustellen habe? Man schreibt dann also Dinge, die viel Performance benötigen, in C/C++ und dann... ???

Muss die C/C++-Quelldatei in den Python-Code per import geladen werden oder muss der C/C++-Code vorher compiliert sein oder ... ???

Vielleicht kann mir das Auslagern an sich mal in kurzen, prägnant Sätzen erklären oder mich auf ein (wenn möglich deutsches) Tutorial zu diesem Thema verweisen?
< Live long and prosper >

Pickaortt
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

In der Regel wirst du wohl nie in den Zwang kommen, Teile in C++ auszulagern. Mit Performancelastigen Dingen sind hier sachen wie Sortieralgorithmen oder Datenbanken gemeint. Viel dieser Sachen gibt es als Library oder built-in in Python. Kurz: Du wirst es wohl nicht brauchen.

Aber der Vollständigkeit halber: Man macht es in der Regel so, dass man erst die Funktionalität in Python schreibt. Sollte dann, wenn das Programm fertig ist, festgestellt werden, ein Teil zu langsam ist, implementiert man diesen Teil in C oder C++. Es gibt Toolkits, die einem das Erstellen von Pythonmodulen erleichtern. z.B. www.swig.org und www.boost.org/libs/python (dort gibt es auch Tutorials)

Diese Module bindest du dann wie alle anderen (ob in C oder Python geschrieben ist egal) auch ein, mit import.

Aber nochmal: Du brauchst es in der Regel nicht! Alle performancerelevanten Teile sind bereits in C geschrieben. Nur, wenn du wirklich neue Algorithmen implementieren musst, die ungeheuer komplex sind, lohnt es, diese Auszulagern. Und auch dann erst, wenn die fertige Pythonversion nachweislich zu langsam ist. Ob nun das sortieren aller Mails seit 2000 nun 1 Sekunde oder 10 Sekunden dauert, interessiert keinen.

Merke: "Preliminary optimization is the root of all evil"
Pickarott
User
Beiträge: 5
Registriert: Mittwoch 9. August 2006, 10:30

Danke für Deine Erklärung.

Habe mir die Beispiele und Tutorials mal angesehen. Leider noch etwas zu verwirrend für mich, aber das wird sich wahrscheinlich mit der Zeit legen, wenn man erstmal ein wenig damit gearbeitet hat.

Und zu Deinem Tipp muss ich Dir recht geben: Wahrscheinlich werde ich es in der ersten und nächsten Zeit nicht brauchen, aber es ist ja immer gut, schonmal von gehört zu haben :wink:
< Live long and prosper >

Pickaortt
Antworten