Prestazionalmente

Mi piace fare test di performance.
Ho da poco acquistato un computer nuovo (che bello!), una manna per fare grafica ma un delirio per le mie tasche.

Ho installato la mia amata Debian Sid/experimental (per me è ed è sempre stata una “lei”), KDE4.1 (sbav..) e poco altro per ora.

Ho pianificato questi test, che in pratica dimostrano poco, se non che i pacchetti precompilati a 32 bit (i386 generico) fanno cacare su macchine moderne. Per moderne intendo con CPU che supporano SSE/SSE2/SSE3, tutte le cosette nuove e un po’ meno nuove, etc etc…
Fanno cacare dal punto di vista prestazionale.

Io ho provato una sola applicazione (Blender) ma credo che a logica si possa prevedere un comportamento simile per qualsiasi “cosa” precompilata per girare su un qualsiasi generico i386 (dalla lavastoviglie col Pentiummmx al termoinceneritore con 28 Opteron)

Test_01
Occorrente:

· due distribuzioni GNU/Linux Live identiche (una a 32bit, una a 64bit)
· un computer che abbia un paio di giga di ram e un processore che supporti le istruzioni a 64bit
· una connessione a internet
· una scena (o più) di Blender un po’ complessa (in rete se ne trovano)

Procedimento:
Siccome non ho trovato Ubuntu Studio Live (che ha blender incorporato) ma solo l’alternate, ho ripiegato su Ubuntu8.10 (che avevo già per questioni di svogliatezza). Quindi mi sono limitato a:

· far partire Ubuntu live
· stoppare gdm
· configurare la rete
· installare blender, aggiornandolo alla 2.48a
· far partire il rendering della scena in background (senza GUI)
· segnare i risultati (tempi di rendering)

Tutto questo per tutte e due le volte (una con la 32bit una con la 64bit)

Risultati:
Ho eseguito questa cosa usando due scene. I miei risultati dicono che, se il tempo di rendering a 32bit equivale a 100, quello a 64bit è 67.
I tempi di rendering con il pacchetto compilato a 64bit sono inferiori del 32-35% rispetto a quelli ottenuti nel sistema a 32bit.

Test_02
Occorrente:
· un computer con un semimoderno o moderno processore (dal pentium4/athlonxp in poi)
· con sopra installato un qualsiasi SO a 32bit (io consiglierei GNU/Linux, debian o ubuntu), anche una live usata col metodo del Test_01
· una o più scene per blender

Procedimento:
· compilare da una parte BlenderSVN, senza dare a gcc flag di ottimizzazione
· compilare da un’altra parte BlenderSVN, dando a gcc le flag per ottimizare la compilazione
· testare la scena con tutte e due le build e segnarsi i tempi

Risultati:
La build ottimizzata guadagna oltre il 25% rispetto a quella “standard”, sul mio vecchio PentiumM.

Che dire? Che è un bordello:
Di certo ottimizzarsi le proprie applicazioni (sopratutto quelle assetate di CPU) fa solo bene.
Logicamente, i pacchetti precompilati i386 devono poter girare davvero su qualsiasi i386, quindi non sono ottimizzate per una cippa con le nuove istruzioni.
I pacchetti precompilati amd64 sono di per loro ottimizzati o quasi (ho provato a compilare blender ottimizzandolo al massimo per amd64 e guadagno un ulteriore 2-3%). Gli amd64 sono una tecnologia relativamente nuova e dal più vecchio fino all’ultimo supportano una serie di istruzioni avanzate, è logico che i mantainer di questi pacchetti le sfruttino.
Chi ha un nuovo computer (x86_64) rimarrà abbastanza deluso dalle prestazioni della propria macchina se usa un sistema a 32bit ed i pacchetti “ufficiali” (precompilati), parlando sempre di programmi con alte esigenze in CPU.

Note
· I confronti devo essere identici. Stessa macchina, stesse versioni software, stesse procedure, stessa critica.
· Per il Test_01 è necessario avere almeno 2GB di ram, a patto che non si usi un sistema su HDD.