-
C++ et Python
Bonjour � tous,
Notre �quipe de d�veloppement arrive au bout d'un projet. Au bilan, un beau logiciel de traitement d'images et de vid�os de physique est n�, avec une interface WxWidget. Le logiciel est somme toute, assez imposant ( ~80 000 lignes de code). Le coeur (IHM + squelette traitement) est en C++, avec un syst�me de plugin Python (embarqu� via Boost.Python) pour pouvoir int�grer des algos de maquettage rapidement. Ce syst�me hybride est assez sympa, puisque rapide et modulaire.
Par contre, le succ�s montant de Python m'a pouss� � me poser 2 questions. Etant donn� le nombre croissante de biblioth�que Python (Trac� de graphe, ... ), plus la souplesse du langage, je me suis demand� si
- Un "coeur" Python avec des algos Python et C++ (quand on a besoin de rapidit�) n'�tait pas mieux tout compte fait. Disons, plus souple pour la modification plus tard (ajout de bouton, script python qui peuvent contr�ler l'interface), et puis plus simple � coder.
- Un coeur Python risque t-il de beaucoup ralentir par rapport � un coeur C++ pour un gros logiciel ?
Merci pour vos �claircissements,
Poukill
-
Ayant des probl�matiques �quivalentes et me posant les m�mes questions, je suis int�ress� par cette discutions !
Pour ma part je vois les choses avec les arguments suivants :
* ton historique, comme nous ton moteur est fait et il est en c++
* la p�rennit� de c++ est importante (� priori je dirai plus que celle de python : tes plugins python sont-ils compatible Python 3000 ? :) )
* dans le domaine de l'imagerie et de la visualisation, c++ est quand m�me pas mal.
Alors apr�s j'ai aucun soucis avec Python, au contraire ! S'il n'y avait pas les probl�mes historiques (on repart de rien), l� je dis pas.
Si ton "coeur" d'application est un c�ur en grande partie d'IHM d'application (envoie de message, maintient des objets, serialisation, acc�s donn�es, cache, ...), je pense que la diff�rence de perf C++/Python est invisible. Si maintenant, c'est de l'imagerie temps r�el (ou quasi), l� le choix se portera surement sur C++.
Enfin, il y a peut-�tre la question des threads au niveau coeur d'application. Si c'est python qui doit �tre en charge des threads, si je ne me trompe pas, tu auras plus de difficult� et des performance moindre que dans le cas de C++.
/Johan
-
Salut,
Je vais me contenter d'�mettre une id�e toute pragmatique, mais, n'aurais tu pas la possibilit� d'envisager de coder un "mini coeur" en python (tu sais, juste les 5 � 10% du code r�ellement "critique" du point de vue des performances ;)) et de faire des bench :question:
Maintenant, beaucoup plus pragmatique, encore...
L'un dans l'autre, ce projet a n�cessit� un temps de conception et de mise au point sans doute important (m�me si ce n'est que quelques mois :D), et vous avez visiblement trouv� "couple gagnant" qui vous permet de respecter vos sp�cificit�s et vos besoins d'�volutivit�, de maintenance et de performances.
Ne serait-il pas dommage d'envisager de "tout mettre au bac" simplement pour ne pas avoir pens� � se poser cette question plus t�t :question:
Car, malgr� tout, si l'on peut estimer qu'une bonne partie de l'analyse peut �tre r�utilis�e, il n'en reste pas moins que ce que tu envisages ici n'est rien d'autre que de jeter le temps qu'il a fallu pour �crire les 80.000 de code (avec les probl�mes que peut avoir pos� ce seul fait) pour reprendre quasiment depuis le d�but, avec le risque inh�rent de se heurter � d'autres probl�mes du fait du changement de langage :aie: