c++ - std::vector 优化

标签 c++ stdvector

假设从 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/

相关文章:

c++ - <stddef.h> 中的 'offsetof' 宏是否会调用未定义的行为?

c++ - Consexpr if 具有非 bool 条件

c++ - 在调试器中可视化自定义浮点类

c++ - 构造期间对 vector 中元素的引用

c++ - 复制算法与容器构造函数

c++ - 什么是 sa_family_t

c++ - 从 BSTR 转换为 char*

C++ vector 内存不足

c++ STL容器存储了一个重载operator =的类

c++ - 为什么调用 std::vector::back() 会使我的程序崩溃