如果,除此之外,我应该把更可能的部分放在哪里?

Bar*_*ski 8 c if-statement flow-control

我想知道语言中是否存在很大的性能差异,是否应该更有可能ifelse子句中或在子句中执行代码.这是一个例子:

// x is a random number, or some key code from the user
if(!somespecific_keycode)
   do the general stuff
else
   do specific stuff
Run Code Online (Sandbox Code Playgroud)

和另一个解决方案

if(somespecific_keycode)
   do the specific stuff
else
   do general stuff
Run Code Online (Sandbox Code Playgroud)

pb2*_*b2q 7

希望将它们置于使代码更清晰的顺序中,这通常更有可能首先执行.

  • 完全支持这个答案.具有精细编码约定的优秀组织将其纳入规则 (2认同)

Bjo*_*rnD 7

正如其他人所说:在性能方面,你最好依靠你的编译器和硬件(分支预测,推测执行)来做正确的事情.

如果您真的担心这两个对您没有足够的帮助,GCC会提供内置(__builtin_expect),您可以使用它来明确指出分支的预期结果.

在代码可读性方面,我个人更喜欢最重要的案例.