【发布时间】:2011-07-04 05:22:47
【问题描述】:
我在 VC++ 中有如下外观代码:
for (int i = (a - 1) * b; i < a * b && i < someObject->someFunction(); i++)
{
// ...
}
据我所知,编译器优化了所有这些算术运算,它们不会在每个循环中执行,但我不确定他们是否能判断出上面的函数每次也返回相同的值,但它没有每次都需要调用。
将所有计算保存到变量中是更好的做法,还是仅仅依靠编译器优化来获得更具可读性的代码?
int start = (a - 1) * b;
int expra = a * b;
int exprb = someObject->someFunction();
for (int i = startl i < expra && i < exprb; i++)
{
// ...
}
【问题讨论】:
-
这里,
++i优于i++。 -
@Nawaz 只要 i 只是一个整数,它就不应该有所作为。
-
@Timbo:取决于编译器是否对此进行优化。毕竟在
i++的情况下,会创建一个临时的! -
@Nawaz:你敢找一个不执行优化的编译器。
-
感谢您的所有回答!我将选择一个保存函数结果并将算术保留在表达式中的方法,因为保存它们只会创建不必要的变量名。
标签: c++ visual-c++ optimization