编程神话? Pre与post增量和减量速度

时间:2013-08-26 20:08:05

标签: c++ performance optimization increment decrement

所以,当我们的高级程序员离开时,我正在进行C ++测试,第一个问题是这样的:

  

如果没有编译器优化,哪种方法运行得更快?

     

方法1

     

for(int i = 0; i < 100000; i++) { }

     

方法2

     

for(int i = 100000; i >= 0; --i) { }

现在,如果你像我一样和我遇到的几乎所有其他开发人员(现在只保存一个),你就会被认为是预先增加的&amp;预递减运算符(++i--i)本质上比后递增和&amp;后递减运算符。所以我自然而然地选择方法2

但是,我们的高级程序员返回并告诉我这两个函数将在相同的时间运行。

认为这只是一些精心设计的笑话,我开始证明他是错的并鞭打了这个:

#define ITERATIONS  (1000000000)
clock_t start = clock();
for(int64_t i = 0; i < ITERATIONS; i++)
{}
auto first_clock = clock() - start;

start = clock();
for(int64_t j = ITERATIONS; j > 0; --j)
{}
auto last_clock = clock() - start;

令我惊讶的是:

first_clock = 25333
last_clock =  25277

出于所有意图和目的,这些方法是相同的!

那么,这个神话来自哪里?它曾经是真的,在新的编译器中变得虚假吗?期待有趣的讨论。 :)

0 个答案:

没有答案