Compilatori

Trovo sempre molto affascinante, seguire le evoluzioni tecnologiche in fatto di compilazione. Le architetture HW cambiano drasticamente, le risorse a disposizione pure. Va da se che il compilatore e le librerie "base" sono spesso soggette ad aggiornamenti. Ma quando modificare il gcc non basta più, anche perchè siamo onesti, le capacità richieste e le competentemente necessarie sono di un elite, complice anche un eccessivo e spesso disordinato ammasso di codice derivato da "secoli" di patch per le più svariate ragioni. E' necessario guardare oltre, ricominciare da zero. LLVM sembra la più reale delle alternative, pure la conservatrice Apple ( sul versante compilatori ) ha capito l'importanza di allontanarsi dal GCC classico. Il codice prodotto su MAC OSX con XCODE 4.xx è performante, più compatto e il runtime più sicuro ( non ho fatto prove personali, ma mi fido su quando letto in numerosi forum. ). Ho provato a cimentarmi con LLVM su Linux tramite gentoo, compilando WORLD, ci ho perso mezza giornata, ma senza riuscire nell intento. Ho provato allora ha compilare singoli programmi, ma ad "occhio" non mi sembrano più performanti. O meglio, le attese erano di gran lunga superiori del risultato finale. Ho provato ha codificare MP3, convertire foto ecc ... ma i tempi sono praticamente uguali se non peggiori. Problema di SWITCH ? In effetti ho notato che non tutti i comandi GCC sono supportati e LLVM ne introduce di nuovi, probabilmente studiandoli si possono sicuramente ottenere risultati migliori. O forse è semplicemente un TRADE OFF fra perfomance e sicurezza. La sicurezza si ottiene quasi sempre a scapito delle performance. Quindi ha parità di tempo di esecuzione è effettivamente più veloce. Poi mi domando, se programmando meglio ( avendo presente la nuova architettura LLVM ) e usando nuovi pattern per il parallellismo non sia un campo su cui puntura per ottenere valori migliori.

Googlando un pò ho trovato alcuni benchmark interessanti, che mostrano come i binari LLVM siano di circa il 23% più lenti della controparte compilata con GCC classic.

Continuerò a seguire da vicino questa competizione, sono sicuro che ci sono ampi margini di miglioramento in virtù delle premesse del progetto LLVM. ;)

Commenti

Post popolari in questo blog

Commentare o Scommentare

{ORACLE} Come chiudere LOCK su transazioni distribuite