Disclaimer/Avertissement:
Ceci est un micro-optimisation , et ne sera jamais une incidence sur l'efficacité de votre programme d'une manière qui est mesurable par les utilisateurs. Si vous désactivez toutes les optimisations du compilateur et exécutez un excellent profileur, vous pourrez peut-être quantifier les effets, mais aucun utilisateur ne s'en apercevra.
Ceci est particulièrement vrai pour votre situation, où le code en question n'est exécuté que toutes les quelques secondes. Le temps consacré au profilage sera probablement mieux utilisé pour améliorer d'autres parties de votre application. En outre, dans ces situations, la lisibilité doit toujours prévaloir sur les micro-optimisations sans goulot d'étranglement (bien que ma réponse ci-dessous ne tienne compte que de l'efficacité d'exécution, comme demandé). Par conséquent, mon code recommandé pour vous d'utiliser dans cette situation est x=true
, car c'est le plus facile à lire et à comprendre.Enfin, si l'ajout du contrôle améliore la vitesse, le compilateur le sait probablement déjà et le fera pour vous, donc vous ne pouvez pas vous tromper avec x=true
(c'est pourquoi vous devez désactiver les optimisations avant d'exécuter le profileur).
Réponse:
La seule vraie façon de comprendre cela est par le profilage. Vous pouvez trouver que le test 0 (x == false) ne prend pas du tout de temps, et par conséquent il vaut la peine d'inclure en raison du temps qu'il économise lorsque x s'avère être vrai. Ou vous pouvez trouver que le test prend assez longtemps pour perdre trop de temps lorsque x s'avère faux. Je pense que le test n'est pas nécessaire. C'est parce que 0-testing et d'autres opérations au niveau du bit (et, ou, etc.) sont si rapides que je les traite habituellement comme prenant le même temps élémentaire. Et si le test 0 prend le même temps qu'une opération OU (réglage sur Vrai), le test 0 est une perte de temps redondante. Le profilage pourrait bien me prouver que je me trompe bien sûr, et ma supposition est basée sur des hypothèses vagues sur les opérations au niveau du bit, donc si vous choisissez de lancer un profileur et de comprendre cela, je serais certainement intéressé par les résultats.
Cela ne fera aucune différence notable (sauf si x a eu des effets secondaires, tels que l'envoi d'événements, la réaction des auditeurs, etc., auquel cas la réponse est "ça dépend"). Faites ce qui est logique dans votre logique de programme. –