Compilare vs utilizzare prestazioni binarie predefinite?


11

Le prestazioni saranno migliori (più veloci) se compilo manualmente l'origine per un componente software per la macchina reale su cui verrà utilizzata, rispetto a se l'origine è stata compilata su un'altra piattaforma, forse per molte architetture diverse? Ho ottenuto alcuni buoni risultati compilando la fonte che ho scaricato e mi chiedo se ciò fosse dovuto alla sua compilazione invece di scaricare un binario precompilato che è spesso il caso degli aggiornamenti del software.


2
La compilazione per la compatibilità con molte architetture potenzialmente elimina alcune ottimizzazioni che potrebbero essere possibili durante la compilazione per una singola architettura.
Robert Harvey,

1
Oltre ad essere più mirato (il che sarà quasi sempre vantaggioso), probabilmente incontrerai anche grandi differenze tra i compilatori: diversi compilatori supportano diverse ottimizzazioni e talvolta i colli di bottiglia delle prestazioni possono essere ottimizzati da uno, ma non dall'altro.
Daniel B,

Risposte:


8

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


7

La compilazione da fonti ti offre 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 esatte impostazioni del tuo non offrirebbe alcuna differenza, ma la modifica delle impostazioni dai valori predefiniti può comportare notevoli miglioramenti.

Ad esempio, se i file 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.


Quindi il mio sforzo di compilazione potrebbe non essere stato vano. Ho scaricato il sorgente su mod_jk e compilato ed è diventato molto veloce e mi chiedo se ciò fosse dovuto alla compilazione manuale. Grazie per la risposta.
Niklas,

1

Questo dipende davvero dai due compilatori e flag del compilatore utilizzati. Di solito, le impostazioni del compilatore e dei flag sul tuo computer locale sono più appropriate per il tuo particolare computer se le cose sono configurate correttamente.

Ma, se, ad esempio, il binario pre-costruito dovesse essere costruito con un compilatore di ottimizzazione molto migliore (o uno speciale di riferimento progettato con flag sintonizzati per quel particolare pezzo di codice e per fortuna appropriato per il tuo sistema) rispetto al compilatore su il tuo sistema, quindi è possibile che qualsiasi compilatore sul tuo sistema possa effettivamente produrre prestazioni peggiori.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.