【发布时间】:2015-04-17 05:41:28
【问题描述】:
如果我尝试运行这样的循环:
int i;
for (i = 0; i < 1e9; i++)
{
1 + 1;
}
编译器完全优化它,甚至不运行它。但是,如果我将int i 设为静态,那么即使我进行了更高的迭代,它也会继续运行循环。这是在 Visual Studio 2013 中,在发布模式下开启了优化。
【问题讨论】:
-
JavaScript 没有
int数据类型。事实上,当您在 JavaScript 中声明变量时,您使用var声明它们,而不是使用数据类型。 JavaScript 中的变量没有类型。此外,JavaScript 没有被编译。它被解释了。 -
您使用哪种语言?哪个编译器?哪个平台?
-
了解周围的上下文对于优化也很重要。你能发布整个函数吗?
-
不要在整数代码中使用像 1e9 这样的浮点常量,如果您查看生成的程序集,即使您不使用它也会产生大量转换和比较。改为使用 1000000000
-
这就是全部,它在 main 函数中。这是使用 Visual Studio 2013,优化已打开,正如我所说,将变量设为静态会使编译器不对其进行优化。 @Lưu Vĩnh Phúc,我不知道 1e9 是浮点数,我这样做是因为它看起来更干净。我还在学习。
标签: c++ optimization compiler-optimization