【发布时间】:2011-09-25 03:00:16
【问题描述】:
以下两种情况是否存在性能差异:
第一:
int test_some_condition(void);
if( some_variable == 2 && test_some_condition())
{
//body
}
第二:
int test_some_condition(void);
if( some_variable == 2 )
{
if(test_some_condition())
{
//body
}
}
更新:我知道如何创建测试并测量每个案例的性能或查看为每个案例生成的程序集,但我确信我不是第一个遇到这个问题的人,如果已经测试过的人可以是我一个简单的是/否答案。
【问题讨论】:
-
设身处地为编译器编写者着想。你将如何实现
&&? -
将每个测试运行几百万次并测量时间以找出答案。编译两者并使用
objdump查看生成的汇编程序@ -
多一层缩进通常不值得提高性能,即使存在差异。
标签: c performance if-statement micro-optimization short-circuiting