Avantages de L'option "Optimiser le code" dans Visual Studio build

Une grande partie de notre code de version C# est construit avec l'option 'Optimiser le code' désactivée. Je crois que c'est pour permettre au Code construit en mode de publication d'être débogué plus facilement.

Étant donné que nous créons un logiciel de bureau assez simple qui se connecte aux services web backend, (ie. pas une application particulièrement gourmande en processeur) alors que se passe-t-il si une sorte de performance pourrait être attendue?

Et une plate-forme particulière est-elle susceptible d'être pire affectée? Par exemple. multi-processeur / 64 bit.

28
demandé sur g t 2010-03-15 03:39:04

5 réponses

, tous Les détails sont disponibles à l' http://blogs.msdn.com/jaybaz_ms/archive/2004/06/28/168314.aspx.

En bref...

Dans le code géré, la gigue dans l'exécution fait presque toute l'optimisation. La différence D'IL généré à partir de ce drapeau est assez faible.

13
répondu Zian Choy 2010-03-15 00:41:34

Vous êtes la seule personne qui peut répondre à la question" performance hit". Essayez-le dans les deux sens, mesurez la performance et voyez ce qui se passe. Le hit pourrait être énorme ou il pourrait être non existant; personne ne lit cela sait si "énorme" pour vous signifie une microseconde ou vingt minutes.

Si vous êtes intéressé par les optimisations effectuées par le compilateur C# - plutôt que par la gigue-lorsque le commutateur optimize est activé, voir:

Http://blogs.msdn.com/ericlippert/archive/2009/06/11/what-does-the-optimize-switch-do.aspx

29
répondu Eric Lippert 2010-03-15 14:16:04

En fait, il y a une différence, parfois assez significative. Ce qui peut vraiment affecter la performance (car C'est quelque chose que JIT ne prend pas complètement en charge):

  • variables locales inutiles (c'est-à-dire des trames de pile plus grandes pour chaque appel)
  • instructions conditionnelles trop génériques, JIT les Traduit de manière assez simple.
  • Ramification inutile (également pas bien servi par un JIT-après tout, il n'a pas trop de temps pour faire tout le smart optimisations)

    Donc, si vous faites quelque chose de numérique-activez l'optimisation. Sinon, vous ne verrez aucune différence du tout.

6
répondu SK-logic 2010-03-15 10:56:18

Les optimisations effectuées par le compilateur sont de niveau assez bas et ne devraient pas affecter l'expérience de vos utilisateurs.

Si vous souhaitez quantifier l'optimisation de votre application, il vous suffit de profiler une version non optimisée et une version optimisée et de comparer les résultats.

2
répondu Ben S 2010-03-15 00:41:01

Je trouve qu'avec un code complexe et gourmand en CPU (le code que j'utilise est une simulation de Monte Carlo qui peut générer suffisamment de threads pour 100% utiliser un ordinateur. Cela a été testé dans un environnement de base 36) le hit de performance peut être jusqu'à 4 fois plus élevé! Une simulation qui prend 2 heures prendra environ 9 heures sans l'option d'optimisation. (les chemins sont environ 500 000 et pour chaque chemin il y a 500 étapes pour environ 2000 objets différents avec un calcul très complexe sur chaque objet).

0
répondu Alex Lin 2018-08-05 06:28:41