假设从 std::vector 读取大量值的循环是我程序中的瓶颈,建议我更改
void f(std::vector<int> v)
{
...
while (...)
{
...
int x = v[i] + v[j]
...
}
}
到
void f(std::vector<int> v)
{
int* p_v = &v[0];
...
while (...)
{
...
int x = p_v[i] + p_v[j]
...
}
}
通过绕过 [] 运算符,这实际上会提高性能吗?
最佳答案
更有可能(从表面上看)每次调用此函数时复制整个 vector 是瓶颈。为什么不是下面的呢?
void f(const std::vector<int>& v)
在任何情况下,永远不要假设瓶颈在哪里 - 首先进行测量,一旦确定就调整速度慢的代码。
关于c++ - std::vector 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3628794/