Intrigué par toute cette affaire, j'ai réalisé un petit benchmark avec mes gros doigts.
J'y compare quatre implémentations ; celle en JavaScript, celles en C, celle en Python avec NumPy, et ma propre implémentation en Zig qui reprend celle en C.
Pour exécuter Python, j'utilise Python 3.11.2. (Pypy dégrade les performances avec NumPy)
Pour JavaScript, Bun 1.1.17 (plus performant que NodeJs).
Pour la compilation du C et du Zig, Zig 0.13.0. (GCC donne les mêmes résultats)
J'ai enlevé toutes les écritures dans la console sauf celui du résultat final, ainsi que les calculs de temps, pour éviter de pénaliser les langages qui sont plus lents à écrire ou à faire des appels systèmes.
J'utilise l'outil hyperfine pour faire tourner le tout, et voilà le résultat :
Command
Mean [s]
Min [s]
Max [s]
Relative
python wallis.py
6.854 ± 0.055
6.808
6.960
1.84 ± 0.01
bun wallis.js
3.733 ± 0.002
3.730
3.737
1.00 ± 0.00
./wallis_c
3.718 ± 0.001
3.717
3.720
1.00
./wallis_zig
3.718 ± 0.001
3.717
3.721
1.00 ± 0.00
Bilan :
Python est le plus lent, 1.84 fois plus lent que le plus rapide. Et ce, malgré l'utilisation de NumPy.
JavaScript, grâce à Bun, est effectivement quasiment équivalent aux langages compilés, à moins d'un pourcent près.
Les deux langages compilés sont équivalents, ce qui n'est guère surprenant.
Le tout est disponible sur mon dépôt git si vous voulez faire tourner vous-même le benchmark ou prouver que votre langage est le meilleur : https://codeberg.org/alberic89/Wallis
L'informatique n'est pas une science exacte, on n'est jamais à l'abri d'un succès
[^] # Re: Pas équivalent
Posté par alberic89 🐧 . En réponse au message Je veux bien que JavaScript soit optimisé, mais quand même !.... Évalué à 8.
Intrigué par toute cette affaire, j'ai réalisé un petit benchmark avec mes gros doigts.
J'y compare quatre implémentations ; celle en JavaScript, celles en C, celle en Python avec NumPy, et ma propre implémentation en Zig qui reprend celle en C.
Pour exécuter Python, j'utilise Python 3.11.2. (Pypy dégrade les performances avec NumPy)
Pour JavaScript, Bun 1.1.17 (plus performant que NodeJs).
Pour la compilation du C et du Zig, Zig 0.13.0. (GCC donne les mêmes résultats)
J'ai enlevé toutes les écritures dans la console sauf celui du résultat final, ainsi que les calculs de temps, pour éviter de pénaliser les langages qui sont plus lents à écrire ou à faire des appels systèmes.
J'utilise l'outil hyperfine pour faire tourner le tout, et voilà le résultat :
python wallis.pybun wallis.js./wallis_c./wallis_zigBilan :
Python est le plus lent, 1.84 fois plus lent que le plus rapide. Et ce, malgré l'utilisation de NumPy.
JavaScript, grâce à Bun, est effectivement quasiment équivalent aux langages compilés, à moins d'un pourcent près.
Les deux langages compilés sont équivalents, ce qui n'est guère surprenant.
Le tout est disponible sur mon dépôt git si vous voulez faire tourner vous-même le benchmark ou prouver que votre langage est le meilleur : https://codeberg.org/alberic89/Wallis
L'informatique n'est pas une science exacte, on n'est jamais à l'abri d'un succès