i ++,i = i + 1和i + = 1哪一个更快?
我非常想知道在i++
哪一个在CPU中运行最快, i+=1
和i=i+1
,我如何测量它们的执行时间?
嗯,起初人类发明了以下记录。
i = i+1;
然后,随着硬件的成就,mainkind发明了以下记录
i += 1;
最后,由于计算机科学的进步,人类发明了以下记录
++i;
和
i++;
所有这三种forms的记录都是同一组机器指令的表达式。(当它们是一些更复杂的表达式的一部分时,++ i和i ++有一个小的例外):)这套机器指令甚至不依赖于编译器优化的级别。:)
PS当然,我们正在讨论基本类型的这些运算符。 没有任何意义来讨论用户定义类型的这些运算符,因为它们可以以各种方式重载。
除非您有严重损坏的编译器,否则这些都将生成完全相同的代码。 试一试,看看每个的输出。
记下时间戳,并在退出循环时在循环和时间戳中执行其中一个。 循环100万次,并比较每个循环的结果(例如,每种不同类型的一个定时循环)。 如果您使用的是嵌入式系统或非常慢的东西,请减少迭代次数。 你只需要足够的循环来实现明显的差异。
编译器是不同的,并且它们是优化的。 一个好的编译器可能会为每个编译器生成相同的代码,因此您可能看不到任何差异。
使用操作系统提供的最高分辨率时间戳生成function(如微秒或纳秒)。 如果无法获得足够高的分辨率时间戳function,请增加迭代次数,以便进行有意义的比较。
同时关闭优化并查看生成的时间是否不同。 看看你是否可以让编译器向你展示相当的机器语言以获得更多的理解。