Interfaçage C et Python
Il est possible d’utiliser du code C dans un programme Python (et inversement). Cela permet de réutiliser des bibliothèques existantes, mais aussi d’obtenir de bien meilleures performances, en implémentant les calculs complexes en langage C. Les questions ci-dessous visent à comparer les temps de calcul en langages C et Python, ainsi que la mise en oeuvre en langage C, d’un module Python. L’exercice s’appuie sur le calcul de la suite de Fibonacci:
\[\begin{align*} F_0 & = 0\\ F_1 & = 1\\ F_n & = F_{n-1} + F_{n-2} \text{ si } n\ge 2\\ \end{align*}\]- Écrire un script Python
fibonacci.pyqui prend un entiernen ligne de commande et affiche $F_n$. - Écrire un programme C
fibonacci.cqui prend également un entiernen ligne de commande et affiche $F_n$. - Comparer les temps d’exécution des deux programmes pour des valeurs croissantes de
n(débuter avecn=10, puis des valeurs de5en5). - En suivant ce tutoriel, programmer:
- dans le fichier
fibmodule.c, la fonction C définie dans le fichierfibonacci.c, ainsi que les fonctions et structures de données nécessaires à la définition du modulefib - dans le fichier
setup.py, les définitions nécessaires à la compilation du module avecdistutils.
- dans le fichier
- Importer le module
fibdans l’interface REPLpython, et vérifier son bon fonctionnement. Comparer les temps de calcul du modulefibavec votre programme C et votre script python.