IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Python 3.11 serait 3 fois plus rapide que la version 3.8 du langage,
Selon un test de performance

Le , par Bill Fassinou

36PARTAGES

18  0 
Python 3.11, la dernière version langage, serait significativement plus rapide que les versions précédentes. Python 3.11 présenterait des améliorations de performance spectaculaires par rapport à Python 3.10 et aux versions antérieures. Après un test réalisé récemment, Bram Wasti, ingénieur système chez Meta, affirme que Python 3.11 est 3 fois plus rapide que la version 3.8. Wasti pense tout de même qu'il y a encore du chemin à faire en matière d'améliorations des performances.

Python est un langage interprété populaire, mais réputé lent par rapport à des langages comme JavaScript ou C++. Mais ces dernières années, il a fait des progrès en matière de performance et plusieurs benchmarks révèlent que la version la plus récente présente une accélération notable. Selon le site officiel du langage, Python 3.11, publié il y a quelques jours, est entre 10 et 60 % plus rapide que Python 3.10. « En moyenne, nous avons mesuré une accélération de 1,25x sur la suite de benchmark standard », a écrit Pablo Galindo Salgado, membre de l'équipe de développement de Python, dans les notes de version de Python 3.11.



Wasti a également réalisé un test après la sortie de Python 3.11 pour voir à quel point il était rapide par rapport aux versions précédentes, mais également par rapport à d'autres langages. À l'aide d'un MacBook doté d'une puce M1 Pro, il a exécuté un code de simulation à N corps en utilisant Python 3.8, 3.11, Bun et C++17 (-O2). Pour mémoire, une simulation à N corps donne une approximation numérique de l'évolution d'un système de corps dans lequel chaque corps interagit continuellement avec tous les autres corps. La simulation à N corps est utilisée dans de nombreux autres problèmes de calcul scientifique.

Un exemple familier est une simulation astrophysique dans laquelle chaque corps représente une galaxie ou une étoile individuelle, et les corps s'attirent mutuellement par la force gravitationnelle. La simulation de l'écoulement turbulent des fluides et le calcul de l'illumination globale en infographie sont d'autres exemples de problèmes faisant appel à la simulation à N corps. Wasti a présenté les résultats obtenus lors du test dans un billet de blogue sur son site Web personnel. Pour exécuter cette simulation, Python 3.8 aurait mis 96,79 secondes, alors que Python 3.11 n'aurait mis que 31,98 secondes. C'est 3 fois plus rapide.

En outre, Wasti affirme que JavaScript est une bonne base de référence pour les performances du langage. Tout comme Python, il s'agit d'un langage de script flexible à typage dynamique, qui peut être exécuté dans le terminal et qui dispose d'une interface C-API bien établie. Il note que JavaScript n'est pas exactement un outsider dans cette comparaison. Toutefois, il a choisi de faire cette comparaison, car JavaScript est également très populaire et réputé plus rapide que Python. Wasti affirme que Bun, un moteur d'exécution JavaScript rapide, aurait mis 0,768 seconde pour exécuter la simulation, soit 41 fois plus vite que Python 3.11.

Bun permet de regrouper, transpiler, installer et exécuter des projets JavaScript et TypeScript. Il s’agit d’un runtime JavaScript avec un bundler natif, un transpiler, un task runner et un client npm intégrés. Bun est conçu pour remplacer les application ou scripts JavaScript et TypeScript sur l’ordinateur local. Il implémente nativement des centaines d'APIs Node.js et Web, y compris environ 90 % des fonctions Node-API (modules natifs), fs, path, Buffer et plus encore. L'objectif de Bun est d'exécuter la plupart des codes JavaScript en dehors des navigateurs, en apportant des améliorations de performance et de complexité à l’infrastructure.

Le troisième langage utilisé par Wasti lors de ce test est le C++ (C++17). Il s'agit d'un langage compilé, ce qui signifie qu'il ne bénéficie pas de la commodité de Python et de JavaScript. En plus d'un typage strict et d'une syntaxe généralement moche, le C++ nécessite également une compilation préalable. Selon Wasti, il faut 0,183 seconde pour compiler le code C++ avec -O2. Ensuite, en exécutant le binaire, le C++ met 0,423 seconde à exécuter la simulation, soit 1,8 fois plus vite que JavaScript. « Pour moi, ce chiffre représente la performance "maximale" qu'un langage comme Python pourrait atteindre », a déclaré Wasti.

« Je pense que c'est génial que Python améliore ses performances. Le langage a une syntaxe très agréable et est souvent le premier langage enseigné aux nouveaux programmeurs », a-t-il ajouté. En outre, d'autres sources estiment que Python 3.11 est une énorme amélioration dans le domaine des performances par rapport aux versions précédentes de CPython. Python 3.11 serait un grand changement pour l'augmentation des performances et pour rendre cette implémentation de facto de Python plus compétitive par rapport à Pyston et PyPy. Python 3.11 apporte également de nouvelles fonctionnalités très utiles.

Parmi les principales fonctionnalités, citons l'amélioration du typage, l'ajout de la prise en charge des groupes de tâches avec E/S asynchrones, la localisation fine des erreurs dans les traces, les groupes d'exceptions, la prise en charge de l'analyse de TOML dans la bibliothèque standard et divers changements de typage. L'ajout le plus important parmi les nombreuses améliorations individuelles des performances dans Python 3.11 est l'"interpréteur adaptatif spécialisé". L'interpréteur tente d'analyser le code en cours d'exécution et de remplacer les bytecodes généraux par des bytecodes spécifiques au type, car le type d'un objet change rarement.

Par exemple, les opérations binaires telles que l'addition et la soustraction peuvent être remplacées par des versions spécialisées pour les flottants, les entiers et les chaînes de caractères. Les utilisateurs n'ont pas besoin de modifier le code de leurs programmes Python pour bénéficier des gains de vitesse de Python 3.11.

Source : Billet de blogue

Et vous ?

Quel est votre avis sur le sujet ?
Pensez-vous que la simulation à N corps est pertinente pour ce test ?
Que pensez-vous des améliorations de performances dans Python 3.11 ?

Voir aussi

Python 3.11 est disponible et s'accompagne d'une amélioration de la vitesse, de meilleures gestion des erreurs, du type self ainsi que des notes d'exception

Python 3.11 est en moyenne 25 % plus rapide que 3.10, compilé avec GCC sur Ubuntu Linux, l'accélération peut aller de 10 à 60 %

Bun, un nouveau moteur d'exécution JavaScript, livré avec un client SQLite3 rapide, il apporte un peu de concurrence pour Node et Deno

La compilation à la volée (just-in-time) ne serait pas ergonomique, selon Abe Winter qui propose des améliorations

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de archqt
Membre émérite https://www.developpez.com
Le 29/10/2022 à 15:01
Le C++ a une syntaxe moche ? autant les templates à la création cela peut être effectivement compliqué, mais cela est réservé pour les cas complexes aux experts, autant pour le reste je ne trouve pas cela moche
4  0 
Avatar de HaryRoseAndMac
Membre extrêmement actif https://www.developpez.com
Le 31/10/2022 à 0:15
Citation Envoyé par archqt Voir le message
Le C++ a une syntaxe moche ? autant les templates à la création cela peut être effectivement compliqué, mais cela est réservé pour les cas complexes aux experts, autant pour le reste je ne trouve pas cela moche
De toute façon, dire qu'un langage est moche, quel qu'il soit c'est un peu débile ...
Le langage est secondaire dans tout les cas.

Il n'est là que pour permettre d'atteindre un but précis : donner vie à une idée.
Celui qui se masturbe sur le langage est clairement à des années lumières d'avoir compris le boulot de développeur.

Même si il est évident que certains sont plus adapté à des contextes et que donc, la règle numéro une dans ce métier c'est "ça dépend", même là, s'attacher à ça n'est pas se concentrer sur les bonnes choses.

Les seuls à être convaincu de l'inverse de ce que je viens d'écrire, ce sont les mecs formés à l'arrache en six mois, ultra spécialisé qui ne connaissent rien au code et qui se rendrons compte dans 5 ans qu'ils étaient sur la mauvaise route depuis le départ.
4  1 
Avatar de electroremy
Membre éprouvé https://www.developpez.com
Le 21/11/2022 à 14:38
La performance des langages n'est pas seulement accessoire

Un bon langage qui permet de faire plus facilement du code compact et rapide permet :
- d'économiser de l'énergie
- d'utiliser un système avec moins de RAM, moins de ROM et un CPU plus lent ce qui éviter de remplacer son matériel

Un langage à la fois lent et populaire est une catastrophe pour la planète et nos portemonnaies.

Bien sûr, il y a le rôle du programmeur qui doit optimiser son code.

Exemple : sur Arduino, j'ai optimisé deux bibliothèques pour faire "rentrer" le code de mon projet dans les 32ko de rom (client TCP IP + écran LCD graphique + dalle tactile + capteurs). Non seulement ça marche mais en plus mes fonctions sont à la fois plus complète et sont 8 à 13 fois plus rapide que le code d'origine.
Mais ça demandé pas mal de travail...
...et surtout mon code n'est plus "portables" sur les autres cartes à microcontrôleur
...normal, on ne peut pas tout avoir

Quand on voit ce que demande en RAM et en CPU les versions actuelles de Word et Excel, alors qu'on ne fait pas grand chose de plus avec que les versions de 1997...

Mon premier ordinateur était un Amiga 1200, CPU 68020 à 14Mhz, 2Mo de RAM, j'étais impressionné par ce qu'arrivait à en tirer les programmeurs de l'époque, notamment sur des jeux dignes de bornes d'arcade, des applications graphiques et musicales.

S'agissant de la syntaxe et du confort, ça ne dépend pas que du langage mais aussi de l'IDE.
Un langage "facile" peut être performant : si par exemple les premières versions de Visual Basic étaient lentes, la version VB.NET permet de faire du code aussi rapide qu'en C#
2  0 
Avatar de leopard78
Candidat au Club https://www.developpez.com
Le 07/11/2022 à 14:15
Si tu code moche en C++ c’est ton problème 😬 pas les autres !
1  0 
Avatar de fred1599
Expert éminent https://www.developpez.com
Le 16/11/2022 à 8:04
Bonjour,

Dire qu'un langage est moche est très souvent subjectif et un avis de ce type ne concerne que soit. On lui demande le sien, il le donne... ce n'est pas pour ça que le contredire lui fera changer d'avis sur le C++ ou tout ceux qui sont d'accord avec lui.

La version 3.11 est sans doute améliorée, ce n'est pas pour autant que j'ai choisi ce langage, et ce n'est pas non plus pour cela que des développeurs se mettront à apprendre ce langage.

Même si c'est plus rapide, ça ne le sera pas suffisamment face à des langages compilés et autant dire que c'est souvent à cette comparaison (langages interprétés - compilés) que l'on fait référence.

Par contre cette amélioration peut être intéressante et faire la différence sur des langages comme ruby, R et surtout celui qui commence à faire de l'ombre... julia.

julia étant connu pour être bien plus performant et spécialisé pour des travaux scientifiques, on peut être amené à choisir l'un ou l'autre, et cette version 3.11 équilibre les forces côté performances.
1  0 
Avatar de shenron666
Expert confirmé https://www.developpez.com
Le 07/11/2022 à 20:51
Le binaire compilé en C++ s'exécute en seulement 1,8 fois moins de temps que le code javascript.
Mon premier avis est que je doute que le code C++ soit correctement écrit.
En plus, comparer des temps d'exécution de cet ordre (moins d'une seconde) manque de précision.

Dire que C++ a une syntaxe moche est plus que ridicule vu que la beauté c'est subjectif, et la beauté d'un code c'est... encore plus subjectif.
Perso je préfère le C# mais jamais je n'irai dire que c'est plus beau ou moins moche qu'un autre langage.
0  0 
Avatar de byrautor
Membre éclairé https://www.developpez.com
Le 08/11/2022 à 13:36
3 fois plus rapide !
Mazette, il faut y croire, ma conviction est que ...
0  0 
Avatar de vivid
Membre régulier https://www.developpez.com
Le 16/11/2022 à 7:35
X3 fois plus rapide, c'est reconnaitre que la version précédente a été conçue avec les pieds ! ils font la promotion de leur incompétence ?!!
0  0