2009-09-13 5 views

Répondre

2

Vous pouvez utiliser les commutateurs suivants de la compilation pour produire du code optimisé pour la vitesse.

  • /O2
  • /Ot

Vous pouvez trouver référence des commutateurs du compilateur pour l'optimisation de code here.

+0

Oui, j'en suis conscient. Mais je n'ai pas réussi à mettre O2 sans avoir à mettre beaucoup d'autres options qui ne me permettent pas alors de déboguer le code (qui est l'objet que je veux voir son code dissemblable). J'ai essayé/Ox, mais pour l'utiliser j'ai dû désactiver les contrôles d'exécution de base (/ RTC), le format d'information de débogage, et un autre dont je ne me souviens pas. –

0

Pour la plupart, je dirais que vous ne devez pas vous inquiéter trop beaucoup sur les commutateurs. Les défauts ont tendance à être acceptable pour la plupart des objectifs. Mahin a indiqué où vous pouvez trouver ce que tous les commutateurs font, mais vous devez être prudent car ils peuvent avoir des effets secondaires inattendus. Par exemple, le compilateur gcc (que je connais plus) a un commutateur -fomit-frame-pointer. C'est correct de l'utiliser. Cela libèrera un registre. Cependant, si votre programme tombe en panne, vous n'obtiendrez aucune trace de pile. Donc, si vous essayez de déboguer votre programme, vous ne voulez pas celui-ci. D'autres optimisations pourraient avoir des effets secondaires "plus fous" selon votre système.

L'autre chose à souligner est que, bien que les drapeaux fassent généralement ce qu'ils disent, ils ne sont pas toujours garantis. Par exemple, (encore une fois, dans gcc), le drapeau/O3 devrait produire du code "plus optimisé". Ce n'est pas toujours le cas cependant, et il est recommandé de s'en tenir à/O2.

+0

J'ai appris l'assemblage et j'ai vérifié le code non optimisé. Une fonction qui ne renvoie que 5, sans argument, n'a besoin que de 2 lignes de code avec assembly, mov eax, 5; retn ;, bien que du code que je vois provenir de C++, il prend comme 20 instructions, il pousse les arguments sur la pile, etc. J'aimerais voir ce qu'il fait s'il essaie d'optimiser. –

Questions connexes