me revoilou j'ai fait de nouveaux test avec l-option -O3. de gcc pour l'optimisation.
$ gcc main.c -O3 -o test
J'ai du rajouter des instructions car l'option -O3 rends l'exécution beaucoup plus rapide.
Lecode:
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char *argv[])
{
short a = 0;
/* compteur */
short b = 0;
short c = 0;
short d = 0;
short e = 0;
short f = 0;
short g = 0;
short h = 0;
short i = 0;
short j = 0;
short k = 0;
short l = 0;
for( l = 0; l < 10; l++)
{
for( k = 0; k < 32000; k++)
{
for( j = 0; j < 32000; j++)
{
for( i = 0; h < 32000; i++)
{
for( h = 0; h < 32000; h++)
{
for( g = 0; g < 32000; g++)
{
for( f = 0; f < 32000; f++)
{
for( e = 0; e < 32000; e++)
{
for( d = 0; d < 32000; d++)
{
for( c = 0; c < 32000; c++)
{
for( b = 0; b < 32000; b++)
{
a++;
}
a = 0;
}
}
}
}
}
}
}
}
}
}
}
Avec des short:
$ time ./test
real 0m8.623s
user 0m8.535s
sys 0m0.017s
$ time ./test
real 0m8.262s
user 0m8.110s
sys 0m0.004s
$ time ./test
real 0m8.158s
user 0m8.062s
sys 0m0.014s
Avec des int:
$ time ./test
real 0m8.091s
user 0m7.993s
sys 0m0.014s
$ time ./test
real 0m7.938s
user 0m7.854s
sys 0m0.005s
$ time ./test
real 0m8.146s
user 0m8.015s
sys 0m0.004s
Avec des long:
$ time ./test
real 0m8.008s
user 0m7.944s
sys 0m0.013s
$ time ./test
real 0m8.449s
user 0m8.325s
sys 0m0.016s
$ time ./test
real 0m8.178s
user 0m8.094s
sys 0m0.002s
En moyenne:
Avec des short:
real 8,347s
user 8,235s
sys 0,011s
Avec des int:
real 8,058s
user 7,954s
sys 0,007 s
Avec des long:
real 8,211s
user 8,121s
sys 0,010s
Pour en conclure: gcc optimise très bien le code les différences observé ne sont pas significatives et chacques types donnes les mêmes performances