Il compilatore Intel è uno dei più avanzati compilatori C++ disponibili, presenta una serie di vantaggi rispetto, ad esempio, al compilatore Microsoft Visual C++ e uno dei principali inconvenienti. I vantaggi includono:
Molto buon supporto SIMD, per quanto sono stato in grado di scoprire, è il compilatore che ha il miglior supporto per le istruzioni SIMD.
Supporta sia la parallelizzazione automatica (ottimizzazioni multi core), sia quella manuale (tramite OpenMP), e funziona molto bene.
Supportare l'invio della CPU, questo è molto importante, poiché consente al compilatore di indirizzare il processore per istruzioni ottimizzate durante l'esecuzione del programma. Per quanto ne so, questo è l'unico compilatore C++ disponibile a farlo, a meno che G ++ non lo abbia già introdotto.
Viene spesso fornito con librerie ottimizzate, come librerie di immagini e matematica.
Tuttavia ha un grave inconveniente, il dispatcher come già detto, funziona solo su CPU Intel, questo significa che le ottimizzazioni avanzate saranno lasciati fuori su AMD CPU. C'è una soluzione per questo, ma è ancora un grosso problema con il compilatore.
Per aggirare il problema dispatcher, è possibile sostituire il codice dispatcher prodotte con una versione funzionante su processori AMD, si può per esempio utilizzare Agner Fog'sasmlib library che sostituisce il compilatore generato funzione dispatcher. Molte più informazioni sul problema del dispatching e spiegazioni tecniche più dettagliate di alcuni argomenti sono disponibili nel documento Optimizing software in C++ - anche da Anger (che vale davvero la pena leggere).
Su una nota personale ho utilizzato il compilatore C++ Intel con Visual Studio 2005 in cui ha funzionato perfettamente, non ho riscontrato alcun problema con le estensioni del linguaggio specifico di Microsoft, sembrava capire quelli che ho usato, ma forse quelli menzionati di John Knoeller erano diversi da quelli che avevo nei miei progetti.
Mentre mi piace il compilatore Intel, sto attualmente lavorando con il compilatore Microsoft C++, semplicemente a causa dell'investimento finanziario aggiuntivo richiesto dal compilatore Intel. Vorrei usare il compilatore Intel solo come alternativa a Microsofts o al compilatore GNU, se le prestazioni erano critiche per il mio progetto e avevo una parte finanziaria in ordine;)
fonte
2009-12-30 23:57:28
Attento con assoluti come "* il * compilatore avanzato disponibile". – jalf
@jalf: Sono d'accordo sul fatto che questo potrebbe far credere che l'autore sia di parte, tuttavia questo è un caso in cui abbiamo dimensioni misurabili. È possibile osservare attraverso l'eseguibile prodotto che il compilatore Intel utilizza tecnologie di ottimizzazione più avanzate, rispetto ai compilatori della concorrenza. –
Inoltre, quando si scrivono queste risposte, è meglio essere previdenti sulle affermazioni generali che potrebbero cambiare (cioè diventare false) con il tempo. Come tutti sappiamo, il software si evolve rapidamente e soffre costantemente di essere invaso dai concorrenti. Anche solo pochi anni possono cambiare le cifre in modo drammatico. – ulidtko