2Fermer4
GoldenCrystalLe 25/09/2012 à 15:57
Sans être un expert en processeurs modernes, je pense que tu devrais te documenter sur la prédiction des branchements.
À priori aujourd'hui, ce qui prend du temps ce n'est pas le branchement ou non branchement, mais la non-validité de la prédiction faite par le CPU. (Contrairement à l'époque ou tu pouvais calculer précisément un nombre de cycles pris par un branchement)

En l'occurrence je ne pense pas que c soit plus prévisible que "not c", en revanche tu économiseras quand même un branchement (inconditionnel) en choisissant ta première condition ^^

Au final ce qui va compter c'est la prédictibilité de c pour le CPU. Et encore, si ce n'est pas exécuté dans une boucle critique, ce n'est sans doute pas important de s'attarder dessus.
À priori, GCC te permet d'aider le CPU avec __builtin_expect(,) mais ça n'a pas l'air possible avec Visual C++ par exemple (vu que ta question mentionne GC,C je suppose que ça ira tongue)

D'autres t'en diront sans doute plus (PpHd, bearbecue ?)

[cross]