这可能是一个愚蠢的问题,但是 while 循环和 for 循环的效率如何比较?一直以来我都被教导说,如果可以使用 for 循环,那么就应该使用它。但实际上它们之间有什么区别呢?
$i = 0;
while($i < 100) {
echo $i;
$i++;
}
相比之下:
for($i = 0; $i < 100; $i++) {
echo $i;
}
我知道在这些具体的例子中,差异只有0.000000001%,但是当我们谈论大型复杂循环时,有什么区别呢?
这可能是一个愚蠢的问题,但是 while 循环和 for 循环的效率如何比较?一直以来我都被教导说,如果可以使用 for 循环,那么就应该使用它。但实际上它们之间有什么区别呢?
$i = 0;
while($i < 100) {
echo $i;
$i++;
}
相比之下:
for($i = 0; $i < 100; $i++) {
echo $i;
}
我知道在这些具体的例子中,差异只有0.000000001%,但是当我们谈论大型复杂循环时,有什么区别呢?
我认为你从你获得的建议中得出了错误的结论。
至少在这个例子中,更喜欢使用for
循环而非while
循环的原因与效率无关;它完全是关于编写能够清晰易懂地表达你意图的代码。
for
循环将初始条件、增量和退出条件都放在同一个位置,使得理解更容易。而while
循环则将它们分散在各处。例如,在你的示例中,i的初始值是什么?哦,你忘记指定了?——那就是重点。
这取决于您使用的确切编译器。在您的示例中,一个好的编译器将为两个选项创建相同的机器代码。
从大多数答案中,您可以猜出for循环比while循环的主要优势在于可读性。for循环更加简洁美观,看起来更加舒适。而且使用while循环容易陷入无限循环的情况。我认为,如果您可以使用for循环,应该尽量使用,只要坚持这一点,您的编程体验将会更加愉快。
for循环
和while循环
之间的性能差异并不是一个大问题,因为现代编译器可以为两种循环生成相同的机器代码,并且两种循环都需要相同的操作:
for循环
,原因如下:
while循环
更有助于更好的内存管理。这将略有依赖于语言,可能也取决于编译器,但大多数现代编译器会将它们视为完全相同,没有任何区别。
把主要的区别看作是风格:使用for
循环时,你不需要去寻找初始值、阈值和增量。
如果你忘记增加计数器,用while
循环制造一个无限循环也更容易。
如果循环很大且复杂,那么循环代码(for或while)的开销将非常低,这就不重要了...
无论如何,如果你真的想知道,我猜你可以在你的IDE中检查汇编代码,或者你可以使用反汇编器在可执行文件中自己查看。 http://www.caesum.com/files/borg228.zip (警告:.exe文件通常有很多膨胀,祝你好运!)
您不知道循环将运行多少次。在循环运行时,设置/达到退出条件(如果要模拟for循环,您将使用类似计数器的东西(额外的代码))
不知道循环将增加多少。您的增量/下一步可以动态设置。虽然您可以在for循环中执行此操作,但您还必须在每次迭代时考虑增量,从而导致某些难以阅读的代码,而如果您使用while循环,则可以避免这种情况。
*可能的用途:搜索流以获取某些数据。您不知道流的长度,因此退出条件是当流结束时。由于它是一个流,您可能会逐行获取数据,因此您可能希望完全跳过白线,使您的增量不一致。