【发布时间】:2010-03-01 17:44:16
【问题描述】:
在像 PHP 这样的脚本语言中,这样的 for 循环将是一个非常糟糕的主意:
string s("ABCDEFG");
int i;
for( i = 0; i < s.length(); i ++ )
{
cout << s[ i ];
}
这是一个例子,我不是在构建这样的程序。 (对于那些觉得他们必须告诉我为什么这段代码在这里插入不好的地方>的人)
如果这个 C++ 示例被翻译成类似的 PHP 脚本,则每个循环周期都会计算字符串的长度。这会在现实脚本中造成巨大的性能损失。
我认为这同样适用于 C++ 程序,但当我查看教程、几个开源库和其他代码时,我发现循环的限制器没有预先计算。
- 我应该预先计算字符串
s的长度吗? - 为什么不总是预先计算限制器? (参见教程和示例)
- 编译器是否进行了某种优化?
【问题讨论】:
-
教程通常是为了可读性而不是速度而编写的。在示例中编写更清晰、更慢的代码并没有错。
标签: c++