【发布时间】:2017-02-20 23:06:32
【问题描述】:
让我们考虑下面的 C++ 代码 sn-p 打印第一个 10 个正整数:
for (int i = 1; i<11;i++)
{
cout<< i ;
}
这会比依次打印每个整数快还是慢,如下所示:
x =1;
cout<< x;
x++;
cout<< x;
等等..
有什么理由说明为什么它应该更快或更慢?它会因一种语言而异吗?
【问题讨论】:
-
比较操作次数。一样的。
-
为什么循环应该更快?是的。缓存。
-
@lukai 我不认为操作的数量是相同的:在非循环版本中没有发生比较。 (虽然这种方法在现实生活中几乎没用)
-
它是 I/O 绑定的。您不会注意到,甚至可能不会测量计算时间差。
-
请注意,第二种方法违反了 DRY 原则(en.wikipedia.org/wiki/Don't_repeat_yourself),会使程序难以维护。再加上编译器已经足够聪明,可以在编译时“在幕后”执行相同的技巧,如果它可能有用,那么真的没有理由手动执行。
标签: c++ performance loops