6 votes

Définitions C++ pour une "meilleure" construction en mode Release dans VS

J'utilise actuellement les définitions de préprocesseur suivantes, ainsi que divers paramètres d'optimisation :

  • WIN32_LEAN_AND_MEAN
  • VC_EXTRALÉEN
  • NOMINMAX
  • _CRT_SECURE_NO_WARNINGS
  • _SCL_SECURE_NO_WARNINGS
  • _SECURE_SCL=0
  • _HAS_ITERATOR_DEBUGGING=0

Ma question est la suivante : quelles sont les autres choses que les autres membres de l'OS utilisent, ajoutent, définissent, afin d'obtenir une Mode de libération construire à partir de VS C++ (2008, 2010) pour être aussi performant que possible ?

En outre, je n'utilise pas de flux, le C++ dont je parle est plus proche du C mais utilise des modèles et des algorithmes STL, etc.

En l'état actuel des choses, les segments de code très simples font pâle figure en termes de performances par rapport à ce que produit GCC sur une machine x86 équivalente exécutant linux (noyau 2.6+) en utilisant 02.

Side-Note : Je crois qu'une grande partie des problèmes sont directement liés à la version STL (Dinkum) fournie par MS. Pourriez-vous nous faire part de votre expérience de l'utilisation de STLPort etc. avec VS C++ ?

1voto

Konrad Points 8333

Je ne vois pas comment l'inclusion de :

_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS

vous donne une construction meilleure ou plus performante. Tout ce que vous faites, c'est désactiver les avertissements concernant les fonctions dépréciées de MS CRT. Si vous faites cela parce que vous savez ce que vous faites et que vous avez besoin d'un code agnostique par rapport à la plate-forme, c'est bien, sinon je reconsidérerais la question.

UPDATE : De plus, le compilateur ne peut pas tout faire. Je parierais que vous obtiendriez un code plus performant si vous instrumentez et corrigiez vos points chauds existants plutôt que d'essayer d'obtenir un minuscule pourcentage (si c'est le cas) de gains dans la phase de compilation et d'édition de liens.

UPDATE2 : _HAS_ITERATOR_DEBUGGING ne peut de toute façon pas être utilisé lors de la compilation des builds de version selon le MSDN . WIN32_LEAN_AND_MEAN VC_EXTRALEAN (et probablement NOMINMAX (bien que les performances ne soient pas la principale raison de le désactiver) pourrait vous donner un certain gain de performances, bien que tous les autres aient une valeur douteuse. Vous devriez privilégier le code rapide correct plutôt que ( peut-être - et je souligne peut-être) un code légèrement plus rapide mais plus risqué.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X