Cra*_*psy 0 c++ for-loop compiler-optimization loop-invariant
我的问题是关于时间优化。通过执行以下操作,for 循环是否更快:
std::vector<int> myVec = {0,1,2,3};
for(int i = 0; i < myVec.size(); i++){}
Run Code Online (Sandbox Code Playgroud)
或者最好的做法是预先计算大小?
std::vector<int> myVec = {0,1,2,3};
int myVecSize = myVec.size();
for(int i = 0; i < myVecSize ; i++){}
Run Code Online (Sandbox Code Playgroud)
我在这里不仅想知道纯粹的时间执行,还想知道它是否会导致以某种方式出现一些问题
size通常,编译器需要在循环的每次迭代中调用该函数。C++ 没有函数纯度的概念,除非编译器具有函数定义的可见性,否则它不能假设该函数没有副作用(如日志记录语句)。
现在,stl 向量是在头文件中定义的,因此编译器确实具有可见性。现在鉴于size的简单性,它很可能会被内联和优化掉。