Per ora ho fatto un po di prove con un mio programmino per calcolare hash. L'algoritmo è quello classico del md2. Il file usato è un avi di 152137068 byte. Ho eseguito tutte le prove che richiedevano la misurazione del tempo tre volte, dopo di che ho preso il valore piu basso. Per misurare i tempi ho usato time. Per le prove ho usato i gcc 3.3.5, gcc-4.0.0, tcc 0.9.22.
Prima prova: Senza ottimizazioni (-O0)
Codice:
T.Comp Byte T.Exec
gcc-3.3 -O0 : 0m0.473s : 26017 : 1m41.967s
gcc-4.0 -O0 : 0m0.536s : 26461 : 1m34.756s
tcc -O0 : 0m0.094s : 25316 : 2m17.727s
Tcc stravince nel tempo di compilazione e pure per quanto riguarda la dimensione del eseguibile. gcc 3.3 batte gcc 4.0 sia nel tempo per compilare che nella dimensione, anche se di poco. In quanto a velocita del eseguibile gcc 4.0 batte di almeno 7 secondi gcc 3.3 e 43 secondi tcc.
i risultati dei test di tcc sono tutti identici (strano sembra accetare -Ox ma non cambia niente) quindi li ho omessi.
Seconda prova: Ottimizazioni per lo spazio (-Os)
Codice:
T.Comp Byte T.Exec
gcc-3.3 -Os : 0m0.831s : 21678 : 0m55.191s
gcc-4.0 -Os : 0m0.858s : 21910 : 0m57.433s
Qui incominciano le stranezze. gcc 3.3 risulta migliore di gcc 4.0 in tutti i campi. specialmente riguardo il tempo di esecuzione.
Terza prova: Ottimizazioni al massimo (-O3)
Codice:
T.Comp Byte T.Exec
gcc-3.3 -O3 : 0m0.995s : 23864 : 0m55.242s
gcc-4.0 -O3 : 0m1.042s : 23638 : 0m59.303s
Per entrambi i compilatori i valori sono peggiorati.
Quarta prova: CFLAGS personalizate
Codice:
T.Comp Byte T.Exec
gcc-3.3 OPT : 0m1.087s : 25784 : 0m54.070s
gcc-4.0 OPT : 0m1.584s : 29974 : 0m54.046s
Anche in questo caso gcc vince come tempo di compilazione e dimensione del eseguibile. gcc 4.0 è stata la vera sorpresa, ben 8K di codice in piu rispetto a -Os e solo un guadagno di 3 secondo. per gcc 3.3 un guadagno di solo 1 secondo.
Ora provo con Lame e qualco'altro scritto in C. Poi provo a vedere come se la cava con il C++. Magari con progetti piu consistenti sopra le 10.000 linee di codice migliora qualcosa. Fino ad ora questo nuovo gcc è stata una vera delusione.
ciao