Voici les résultats concernant la vitesse d'exécution des programmes générés par les compilateurs.
Il s'agit de compter le temps que met une TI92+ à 12 MHz pour effectuer les opérations décrites ci-après.
Résultats pour la routine de compression et la routine de décompression d'Einstein 3.1 :On compresse et on décompresse à la chaîne 65,2 ko de données.
Ces données sont : 1 exécutable de 56 ko, 2 fichiers texte différents de 4,93 ko et 4,27 ko.
Le code du module de (dé)compression est 100% écrit en C et est assez varié (algo d'Huffman) : déréférencements de pointeurs, itérations, récursivité, calculs, opérations binaires (rotation, masquage etc). Il donne donc un aperçu global des performances des compilos je pense.
Avec la ligne de commande par défaut (explicitée dans le post ./1) :
Compression :
1) TIGCC 0.96b8 : 9,0 s
2) GTC : 9,4 s
Décompression :
1) GTC : 6,2 s
2) TIGCC 0.96b8 : 6,9 s
Avec la ligne de commande par défaut, mais en remplaçant -Os par -O2 :
Compression :
1) GTC : 8,8 s
2) TIGCC 0.96b8 : 8,9 s
Décompression :
1) GTC : 5,8 s
2) TIGCC 0.96b8 : 6,9 s
Avec la ligne de commande par défaut, mais en remplaçant -Os par -O3 :
Compression :
1) GTC : 8,7 s
2) TIGCC 0.96b8 : 8,9 s
Décompression :
1) GTC : 5,7 s
2) TIGCC 0.96b8 : 6,8 s
Résultats pour un calcul de racines carrées :Il s'agit de calculer un nombre fixé de racines carrées entières, pour N compris entre 512 et ~2
32. C'est un algorithme dichotomique que j'ai codé vite fait.
// C Source File
// Created 02/10/2007; 21:23:02
// Delete or comment out the items you do not need.
#include <tigcclib.h>
unsigned short compute(unsigned long number);
void _main(void)
{
unsigned long number;
number= (unsigned long)65536 * 65530;
while (number > 512) {
compute(7 * compute(number));
number= number - number/512;
}
}
unsigned short compute(unsigned long number)
{
unsigned long r;
unsigned long lowlimit, uplimit;
lowlimit= 0;
uplimit= (number+1) / 2;
while (uplimit-lowlimit > 1) {
r= (lowlimit + uplimit) / 2;
if (r*r > number) uplimit= r;
else lowlimit= r;
}
return (r);
}
Avec la ligne de commande par défaut (explicitée dans le post ./1) :
1) GTC : 7,6 s
2) TIGCC 0.96b8 : 8,4 s
Avec la ligne de commande par défaut, mais en remplaçant -Os par -O2 :
1) GTC : 7,6 s
2) TIGCC 0.96b8 : 8,4 s
Avec la ligne de commande par défaut, mais en remplaçant -Os par -O3 :
1) GTC : 7,5 s
2) TIGCC 0.96b8 : 8,2 s
Résultats du temps que met l'IA3 de TICon45 1.41 pour battre l'IA2 :Pour la compilation avec TIGCC, j'ai rajouté
-mregparm=5 dans la ligne de commande explicitée au post
./1. C'est parceque cette option figurait dans les options originelles du
build.bat de ce programme.
De plus, 2 petites modifications ont été apportées au code :
- à la ligne 405 de
c4algo.c, j'ai mis
if (random(num_of_equal)==0) en commentaire. La raison est que l'algorithme de l'IA ne doit prendre aucune décision au hasard si l'on veut pouvoir comparer les vitesses de réflexion.
- à la ligne 24 de
ticon45.c, j'ai mis
#define USE_FLINE_ROM_CALLS en commentaire, car GTC ne supporte pas cette directive. La directive USE_INTERNAL_FLINE_EMULATOR reste définie.
Avec la ligne de commande de base :
1) TIGCC 0.96b8 : 73 s
2) GTC : 98 s
Avec la ligne de commande de base, mais en remplaçant -Os par -O2 :
1) TIGCC 0.96b8 : 68 s
2) GTC : 95 s
Avec la ligne de commande de base, mais en remplaçant -Os par -O3 :
1) TIGCC 0.96b8 : 67 s
2) GTC : 95 s
Interprétation :Avec -Os :TIGCC est plus rapide sur 2 tests :
- sur la routine de compression d'Einstein, le gain de temps est de 4,2%
- sur l'IA de TICon45, le gain de temps est de 25,5%
GTC est plus rapide sur 2 tests :
- sur la routine de décompression d'Einstein, le gain de temps est de 10,1%
- sur le calcul des racines, le gain de temps est de 9,5%
Bilan : TIGCC produit des programmes plus rapides de 2,5% en moyenne.
Avec -O2 :TIGCC est plus rapide sur l'IA de TICon45. Le gain de temps est de 28,4%
GTC est plus rapide pour les 3 autres tests :
- sur la routine de compression d'Einstein, le gain de temps est de 1,1%
- sur la routine de décompression d'Einstein, le gain de temps est de 15,9%
- sur le calcul des racines, le gain de temps est de 9,5%
Bilan : TIGCC produit des programmes plus rapides de 0,5% en moyenne.
Avec -O3 :TIGCC est plus rapide sur l'IA de TICon45. Le gain de temps est de 29,5%
GTC est plus rapide pour les 3 autres tests :
- sur la routine de compression d'Einstein, le gain de temps est de 2,2%
- sur la routine de décompression d'Einstein, le gain de temps est de 16,2%
- sur le calcul des racines, le gain de temps est de 8,5%
Bilan : TIGCC produit des programmes plus rapides de 0,6% en moyenne.
Le vainqueur globalement est TIGCC.