可能重复:
Is there a performance difference between i++ and ++i in C++?
在使用以下内容时,请按C中的执行时间来打分。在一些访谈中,我被问到在这些变化中我应该使用哪一种,以及为什么。
a++
++a
a=a+1
a+=1发布于 2010-08-24 14:30:31
以下是g++ -S产生的内容:
void irrelevant_low_level_worries()
{
int a = 0;
// movl $0, -4(%ebp)
a++;
// incl -4(%ebp)
++a;
// incl -4(%ebp)
a = a + 1;
// incl -4(%ebp)
a += 1;
// incl -4(%ebp)
}因此,即使没有任何优化器开关,所有四个语句都编译成完全相同的机器代码。
发布于 2010-08-24 14:34:54
您不能在C中评估执行时间,因为执行的不是C代码。您必须分析使用特定计算机上运行的特定编译器编译的可执行代码才能获得评级。
另外,对单个操作进行评级并不能给出您真正可以使用的东西。今天的处理器并行执行多个指令,因此一个操作的效率在很大程度上取决于它与周围代码中的指令的匹配程度。
因此,如果您确实需要使用性能最好的代码,则必须对代码进行分析。否则(大约98%的时间),您应该使用最易读的代码,并且最好地传达代码正在做的事情。
发布于 2010-08-24 14:36:04
在这种情况下,这类事情实际上是很重要的,很少在两者之间。大多数情况下,这一点也不重要。事实上,我敢打赌,你就是这样的人。
对于一种语言/编译器/体系结构来说,事实可能不一定适用于其他语言。事实上,这一事实在更大的范围内是无关紧要的。了解这些并不能使你成为一个更好的程序员。
你应该学习算法、数据结构、渐近分析、清晰可读的编码风格、编程范例等等。这些技能在生成高性能和可管理的代码方面比了解这些低级细节重要得多。
不要过早优化,也不要微观优化.寻找全局优化。
https://stackoverflow.com/questions/3557489
复制相似问题