2009-08-21 10 views
17

L'onglet Générer des propriétés du projet dans Visual Studio 2005/2008 contient le "code d'optimisation".La case à cocher "Optimiser le code" dans Visual Studio. Qu'est-ce que cela fait exactement?

La documentation indique qu'elle "... active ou désactive les optimisations effectuées par le compilateur pour rendre votre fichier de sortie plus petit, plus rapide et plus efficace".

  1. Ma question est pourquoi ne pas l'avoir?
  2. Pourquoi n'est-il pas activé par défaut?
  3. Que fait-il réellement?

Répondre

24
  1. Vous ne voudriez pas sur un débogage intégré, car il rend plus difficile par le code pas à pas comme le code réel qui est en cours d'exécution peut ne pas refléter correctement ce que vous avez écrit (car certaines lignes seront optimisées out)

  2. il n'est pas par défaut pour les versions Debug pour la raison ci-dessus, il doit être activé par défaut sur la libération builds

  3. il effectue des optimisations telles que inline dynamique et la suppression des variables locales non nécessaires. Toute sorte d'optimisation qui peut être décidée au moment de la compilation.

3

Wikipedia a un article sur compiler optimization qui couvre de nombreux types d'optimisations de base.

Vous ne souhaitez pas créer de builds de débogage optimisés. L'optimisation affecte le débogage de votre code - certaines lignes de code peuvent être supprimées, certaines lignes de code provenant de différentes parties d'une fonction ou de différentes fonctions peuvent être fusionnées, des variables locales peuvent être regroupées, etc. Cela signifie que lorsque le débogage de votre ligne courante peut sembler sauter au hasard en raison du code réorganisé et que l'inspection des variables locales peut être très trompeuse - l'espace pour un local pourrait être réutilisé quand il n'est plus nécessaire et donner un résultat de charabia.

Questions connexes