在以下代码中:
std::vector<int> var;
for (int i = 0; i < var.size(); i++);
Run Code Online (Sandbox Code Playgroud)
size()成员函数是为每个循环迭代调用的,还是仅调用一次?
我对一个大的整数向量进行了大量的计算.在计算过程中不会更改矢量大小.代码经常访问向量的大小.什么是更快的一般:使用vector::size()函数或使用辅助常量vectorSize存储向量的大小?我知道编译器通常能够size()在设置正确的编译器标志时内联函数,但是,使函数内联是编译器可以执行但不能强制执行的操作.
我在VC++中有以下代码:
for (int i = (a - 1) * b; i < a * b && i < someObject->someFunction(); i++)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
据我所知,编译器优化了所有这些算术运算,并且它们不会在每个循环上执行,但我不确定它们是否可以告诉上面的函数每次都返回相同的值并且它不需要每次都要打电话.
将所有计算保存到变量中,或者仅依靠编译器优化来获得更易读的代码是一种更好的做法吗?
int start = (a - 1) * b;
int expra = a * b;
int exprb = someObject->someFunction();
for (int i = startl i < expra && i < exprb; i++)
{
// ...
}
Run Code Online (Sandbox Code Playgroud) c++ ×3
vector ×2
for-loop ×1
gcc ×1
optimization ×1
performance ×1
stdvector ×1
stl ×1
visual-c++ ×1