【发布时间】:2012-02-17 10:52:49
【问题描述】:
在我的设计与分析讲座中 算法讲师说 for 循环将比 while 循环花费更少的时间用于以下示例算法。
1. for(int i=0;i<5;i++)
{
2. print(i);
}
1. int i=0;
2. while(i<5)
{
3. print(i);
4. i++;
}
他说编译器将读取 1. of while 5 次 line 2. 4 次因此总时间 5+4=9 但是在while循环的情况下。编译器将读取 1. 1 次,2. 5次,3次4次,4次4次。因此总时间 1+5+4+4 = 14time 请告诉我这是对的。 for循环比while循环快吗?
谢谢。
【问题讨论】:
-
一个设置为优化速度的编译器可能只发出五次
print(i)并完全消除循环。在这两种情况下。 -
在现实世界中,我们会查看代码的易读性并根据它选择
for或while。编译器将要么优化差异。或者现代机器上的差异是如此之小以至于可以忽略不计。使用让您的生活更轻松的软件,而不是计算机的“生活”。 -
我很确定编译器只会读取每一行一次;)
-
编译器将明确地每行只读取一次。由于它基本上是相同的一组指令以太方式,它在运行时应该没有区别。奇怪的导师。
-
@wali 问题出在您的问题描述中。这与编译器将读取什么以及读取多少次无关,而是它将生成的代码。在这种情况下,它可能与任何现代编译器都是相同的指令集,除了在第二种情况下您没有声明变量。
标签: loops language-agnostic compiler-construction for-loop while-loop