Tests de performance (benchmarks)
Gambas est un langage interprété, sans aucun "juste-à-temps (JIT)" ou autre compilation en code natif jusqu'à la version 3.2.
Voici de petits comparatifs de performances trouvés sur Internet et utilisés pour comparer Gambas et Gambas + JIT avec les langages interprétés Python et Perl.
Les tests ont été réalisés sur ma propre machine, en les faisant tourner avec l'utilitaire systèmeshell
time
. Le temps d'exécution est la somme du temps utilisateur et le temps système.
Notez qu'il y a une petite durée utilisée pour la compilation des fichiers source dans tous les langages.
Presque tous Les tests de performance sont stupides, et les résultats absolus peuvent varier entre deux lancements successives.
Quelques Résultats
Ubuntu 22.04
Les versions de noyau et de langage étaient :
-
Linux kernel 5.15.0-48-generic with AMD Ryzen 5700G CPU.
-
Python 3.10.6.
-
Perl 5.34.0.
-
Gambas 3.17.90 (version de développement du 08 Oct. 2022).
Benchmark |
Python |
Perl |
Gambas |
Gambas JIT |
Gambas JIT without compilation time |
mandelbrot |
3,13 |
2,29 |
1,81 |
0,16 |
0,07 |
nbody |
2,81 |
2,70 |
2,32 |
0,41 |
0,20 |
polynom |
7,78 |
9,61 |
5,94 |
0,20 |
0,14 |
primes |
4,26 |
5,60 |
1,98 |
0,47 |
0,39 |
sort |
2,88 |
3,72 |
3,10 |
0,44 |
0,04 |
string |
3,43 |
1,41 |
0,85 |
0,89 |
0,83 |
string2 |
4,65 |
2,65 |
1,51 |
1,13 |
1,07 |
Les temps d'exécution sont mesurés en secondes.
Ubuntu 21.04
Les versions de noyau et de langage étaient :
-
Linux kernel 5.11.0-37-generic on Intel Core i5-3570K.
-
Python 2.7.18.
-
Perl 5.32.1.
-
Gambas 3.16.90 (version de développement du 20 Oct. 2021).
Benchmark |
Python |
Perl |
Gambas |
Gambas JIT |
Gambas JIT without compilation time |
mandelbrot |
5,27 |
3,83 |
2,85 |
0,21 |
0,10 |
nbody |
4,30 |
4,56 |
3,87 |
0,59 |
0,31 |
polynom |
9,69 |
14,38 |
6,65 |
0,53 |
0,45 |
primes |
6,90 |
7,78 |
2,59 |
0,67 |
0,55 |
sort |
3,54 |
6,32 |
4,43 |
0,65 |
0,07 |
string |
8,80 |
1,77 |
1,37 |
1,47 |
1,39 |
string2 |
5,34 |
2,95 |
1,77 |
1,24 |
1,16 |
Les temps d'exécution sont mesurés en secondes.
Ubuntu 20.04
Les versions de noyau et de langage étaient :
-
Linux kernel 5.4.0-42-generic on Intel Core i5-3570K.
-
Python 2.7.18rc1.
-
Perl 5.30.0.
-
Gambas 3.15.90 (version de développement du 8 Fév. 2021).
Benchmark |
Python |
Perl |
Gambas |
Gambas JIT |
Gambas JIT without compilation time |
mandelbrot |
5,04 |
3,94 |
3,07 |
0,22 |
0,09 |
nbody |
4,18 |
4,57 |
3,71 |
0,68 |
0,28 |
polynom |
9,91 |
13,13 |
6,71 |
0,53 |
0,44 |
primes |
6,43 |
7,98 |
3,10 |
0,65 |
0,51 |
sort |
3,38 |
5,86 |
4,35 |
0,70 |
0,07 |
string |
8,77 |
1,72 |
1,41 |
1,48 |
1,39 |
string2 |
5,44 |
2,94 |
1,91 |
1,42 |
1,34 |
Les temps d'exécution sont mesurés en secondes.
Ubuntu 19.10
Les versions de noyau et de langage étaient :
-
Linux kernel 5.3.0-45-generic.
-
Python 2.7.17.
-
Perl 5.28.1.
-
Gambas 3.14.90 (version de développement du 06 Avr. 2020).
Benchmark |
Python |
Perl |
Gambas |
Gambas JIT |
Gambas JIT without compilation time |
mandelbrot |
4,95 |
3,93 |
3,03 |
0,22 |
0,10 |
nbody |
4,36 |
4,53 |
4,06 |
0,66 |
0,29 |
polynom |
10,14 |
12,63 |
8,92 |
0,53 |
0,44 |
primes |
6,37 |
7,76 |
3,52 |
0,63 |
0,51 |
sort |
3,36 |
5,77 |
5,05 |
0,60 |
0,06 |
string |
9,21 |
2,00 |
1,44 |
1,53 |
1,44 |
string2 |
5,27 |
2,92 |
1,96 |
1,35 |
1,28 |
Les temps d'exécution sont mesurés en secondes.
Code source des tests
Pour obtenir le code source des tests de performance, jeter un coup d’œil
dans le répertoire
benchmark
dans le code source de Gambas.
lancer les tests sur votre propre système
Il y a un script appelé
benchmark.gbs
dans le répertoire
benchmark
.
Ouvrez un terminal, allez dans ce répertoire, et lancez-le.
Vous obtiendrez le résultat sous forme de données HTML. Si vous voulez
le partager avec d'autres, n'oubliez pas de spécifier la distribution que vous utilisez
et votre modèle de processeur.
Par exemple, sur mon système personnel (avec 8 cores, d'où les lignes répétées):
$ uname -a
Linux benoit-kubuntu 5.3.0-45-generic #37-Ubuntu SMP Thu Mar 26 20:41:27 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$ cat /proc/cpuinfo | grep "model name"
model name : AMD Ryzen 7 5700G with Radeon Graphics
model name : AMD Ryzen 7 5700G with Radeon Graphics
model name : AMD Ryzen 7 5700G with Radeon Graphics