Compilazione vs utilizzo delle prestazioni dei binari predefiniti?

9

Le prestazioni saranno migliori (più veloci) se compilerò manualmente il sorgente per un componente software per la macchina reale su cui verrà utilizzato, a confronto se la fonte è stata compilata su un'altra piattaforma, forse per molte architetture diverse? Ho ottenuto dei buoni risultati compilando la fonte che ho scaricato e mi chiedo se questo fosse dovuto alla compilazione invece del download di un binario precompilato che è spesso il caso degli aggiornamenti software.

    
posta Niklas Rosencrantz 05.10.2012 - 00:27
fonte

3 risposte

7

In molti casi (se non la maggior parte), sì. Questo perché il compilatore può produrre codice nativo ottimizzato per quella particolare CPU e ambiente. Il codice è più "mirato".

    
risposta data 05.10.2012 - 00:58
fonte
7

Compilare da fonti ti dà il vantaggio di impostare i flag del compilatore nel modo desiderato per la tua piattaforma specifica. Il download di un pacchetto che è stato compilato con le stesse impostazioni esatte del tuo non offrirebbe alcuna differenza, ma cambiare le impostazioni dai valori predefiniti può ottenere grandi miglioramenti.

Ad esempio, se i binari offerti per il download sono stati compilati per il debug (intenzionalmente o per errore), l'attivazione di un'ottimizzazione più aggressiva migliorerà le prestazioni in quasi tutte le situazioni. D'altra parte, se il codice compilato è ottimizzato al massimo, non vedresti alcuna differenza.

    
risposta data 05.10.2012 - 01:03
fonte
1

Questo dipende in realtà dai due compilatori e dai flag del compilatore usati. Di solito, le impostazioni del compilatore e del flag sulla tua macchina locale sono più appropriate per la tua macchina particolare se hai configurato correttamente le cose.

Ma, se, per esempio, il binario pre-costruito fosse costruito con un compilatore di ottimizzazione molto migliore (o uno speciale di riferimento progettato con le bandiere sintonizzate per quel particolare pezzo di codice e per fortuna appropriato per il tuo sistema) rispetto a il compilatore sul tuo sistema, quindi è possibile che qualsiasi compilatore sul tuo sistema possa effettivamente produrre prestazioni peggiori.

    
risposta data 05.10.2012 - 03:25
fonte

Leggi altre domande sui tag