Le compilateur Python amène les scripts à la vitesse C/C++

  • Français


  • Python est l’un des langages de programmation les plus populaires, mais ce n’est généralement pas le premier choix lorsque la vitesse est requise.

    Bien qu’il puisse être optimisé pour de meilleures performances, Python est apprécié pour des qualités autres que la vitesse, telles que la lisibilité, une courbe d’apprentissage gérable, un écosystème expansif et une utilité à la fois dans le milieu universitaire et dans les affaires.

    Les informaticiens du MIT et leurs collègues, cependant, pensent qu’ils ont trouvé un moyen de tout avoir – l’accessibilité d’un langage de haut niveau avec la vitesse d’un langage de bas niveau. Ils ont développé un compilateur Python appelé Codon qui transforme le code Python en code machine natif sans impact sur les performances d’exécution.

    “Les accélérations typiques par rapport à Python sont de l’ordre de 10 à 100x ou plus, sur un seul thread”, déclare le référentiel Codon. “Les performances de Codon sont généralement comparables (et parfois meilleures) à celles de C/C++.”

    Il y a un hic, bien sûr, autre que sa licence open-source retardée. Codon implémente la plupart mais pas la totalité du langage Python. Certains modules Python n’ont pas été intégrés à Codon. Et il omet des fonctionnalités telles que la manipulation de type dynamique et la réflexion d’exécution qui rendent le code plus difficile à analyser et à optimiser. Ce faisant, il peut s’appuyer sur un moteur de compilation à typage statique qui, en conjonction avec d’autres innovations telles qu’une représentation intermédiaire (IR) plus optimisable et flexible [PDF] – génère un code plus rapide.

    Codon a été développé à l’origine comme un framework pour créer des langages spécifiques à un domaine (DSL) hautes performances en Python. Les DSL sont des langages axés sur un objectif spécifique, par opposition à un langage de programmation à usage général comme Python ou C. Des exemples de DSL incluent CSS, SQL et les anciennes runes font comprendre.

    Dérivé de Seq, un DSL pour la bioinformatique et la génétique, Codon est devenu un compilateur de langage largement compatible avec Python 3. Comme décrit dans un article [PDF] fourni à Le registre avant sa sortie prévue le 16 mars, “Codon : un compilateur pour les applications Pythonic hautes performances et les DSL”, la chaîne d’outils “permet le développement de DSL qui partagent la syntaxe et la sémantique de Python avec des fonctionnalités supplémentaires spécifiques au domaine et des optimisations IR”.

    Les auteurs de l’article – Ariya Shajii (Exaloop), Gabriel Ramirez (MIT CSAIL), Haris Smajlović (Université de Victoria, Canada), Jessica Ray (MIT CSAIL), Bonnie Berger (MIT CSAIL) Saman Amarasinghe (MIT CSAIL), et Ibrahim Numanagić (Université de Victoria) – dire que parce que Codon peut produire du code machine natif sans aucune surcharge d’exécution Python, ils sont capables d’atteindre des performances de type C avec des scripts Python.

    “Contrairement à d’autres implémentations Python axées sur les performances (telles que PyPy ou Numba), Codon est construit à partir de zéro comme un système autonome qui se compile à l’avance en un exécutable statique et n’est pas lié à un runtime Python existant (par exemple, CPython ou RPython) pour l’exécution”, indique le document. “En conséquence, Codon peut obtenir de meilleures performances et surmonter les problèmes spécifiques à l’exécution tels que le verrouillage global de l’interpréteur.”

    Au lieu de devoir … réécrire totalement dans un langage comme C, Codon peut utiliser la même implémentation Python et donner les mêmes performances que vous obtiendrez en réécrivant en C

    Les auteurs discutent de divers DSL hautes performances basés sur Codon conçus pour la bioinformatique, la compression de données et la programmation parallèle qui tirent parti de l’infrastructure de compilateur de Codon. Mais Codon peut également accélérer considérablement les programmes Python standard, bien que ceux qui s’appuient sur des bibliothèques externes telles que Django ou DocUtils doivent s’appuyer sur un pont CPython qui limite les performances à celles de CPython. Par exemple, sur le forum Codon, certains développeurs entreprenants signalent qu’un simple script Fibonacci compilé par Codon s’exécute plus de 70 fois plus rapidement que la version CPython.

    Le professeur du MIT et chercheur principal du CSAIL, Saman Amarasinghe, a déclaré au service MIT News dans un communiqué fourni à Le registre que Python est souvent utilisé par des experts du domaine qui ne sont pas des experts en programmation et qui n’ont pas optimisé leurs applications pour les performances.

    “Au lieu de devoir réécrire le programme à l’aide d’une bibliothèque implémentée en C comme numpy ou de réécrire totalement dans un langage comme C, Codon peut utiliser la même implémentation Python et donner les mêmes performances que vous obtiendrez en réécrivant en C”, a expliqué Amarasinghe. “Ainsi, je pense que Codon est la voie la plus simple pour les applications Python réussies qui ont atteint une limite en raison d’un manque de performances.”

    Codon, nous dit-on, est déjà utilisé commercialement dans des domaines allant de la finance quantitative et de la bioinformatique à l’apprentissage en profondeur. Et dans les mois à venir, attendez-vous à ce que les développeurs de Codon implémentent certaines fonctionnalités Python manquantes. ®

    PS : Oui, il existe bien sûr d’autres compilateurs Python, ainsi que Codon, si vous souhaitez les essayer.

    L'équipe de Comparaland

    L'équipe rédactionnnelle du site

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *