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