Compiler ou utiliser des performances binaires précompilées?

11

Les performances seront-elles meilleures (plus rapides) si je compile manuellement la source d'un composant logiciel pour la machine réelle sur laquelle il sera utilisé, par rapport à si la source a été compilée sur une autre plate-forme, peut-être pour de nombreuses architectures différentes? J'ai obtenu une bonne source de compilation de résultats que j'ai téléchargée et je me demande si cela est dû à la compilation au lieu de télécharger un binaire précompilé, ce qui est souvent le cas avec les mises à jour logicielles.

Niklas
la source
2
La compilation pour la compatibilité avec de nombreuses architectures élimine potentiellement certaines optimisations qui peuvent être possibles lors de la compilation pour une seule architecture.
Robert Harvey
1
En plus d'être plus ciblé (ce qui sera presque toujours bénéfique), vous rencontrerez probablement également de grandes différences entre les compilateurs - différents compilateurs prennent en charge différentes optimisations, et parfois les goulots d'étranglement des performances peuvent être optimisés par l'un, mais pas par les autres.
Daniel B

Réponses:

8

Dans de nombreux cas (sinon la plupart), oui. En effet, le compilateur peut produire du code natif optimisé pour ce processeur et cet environnement particuliers. Le code est plus "ciblé".

épistémex
la source
7

La compilation à partir de sources vous donne l'avantage de définir les indicateurs du compilateur comme vous le souhaitez pour votre plate-forme spécifique. Le téléchargement d'un package qui a été compilé avec les mêmes paramètres exacts que le vôtre n'offrirait aucune différence, mais la modification des paramètres par défaut peut vous apporter de grandes améliorations.

Par exemple, si les binaires proposés au téléchargement ont été compilés pour le débogage (intentionnellement ou par erreur), l'activation d'une optimisation plus agressive améliorera les performances dans presque toutes les situations. En revanche, si le code compilé est optimisé au maximum, vous ne verriez aucune différence.

dasblinkenlight
la source
Donc, mon effort de compilation n'a peut-être pas été vain. J'ai téléchargé la source sur mod_jk et compilé et c'est devenu très rapide et je me demande si cela était dû à la compilation manuelle. Merci pour la réponse.
Niklas
1

Cela dépend vraiment des deux compilateurs et drapeaux de compilateur utilisés. Habituellement, les paramètres du compilateur et des indicateurs sur votre machine locale sont plus appropriés à votre machine particulière si vous avez des choses correctement configurées.

Mais, si, par exemple, le binaire pré-construit se trouvait être construit avec un compilateur d'optimisation bien meilleur (ou un benchmark spécial conçu avec des drapeaux ajustés pour ce morceau de code particulier et par chance approprié pour votre système) par rapport au compilateur sur votre système, il est possible que le compilateur sur votre système produise en fait de moins bonnes performances.

hotpaw2
la source