如果对象的副本存储在 std::vector 中,则当 CPU 将数据从 RAM 带到 CPU 缓存时,它会带来包含向量的多个元素的一块内存。在这种情况下,当您对每个元素进行迭代并调用函数时,您知道将处理多个元素,只有然后 CPU 才会去 RAM 请求其余部分的数据以进行处理。这很好,因为 CPU 没有太多空闲周期。
那么 std::vector 的情况呢?当它带来一组指针时,CPU 是否容易通过指针获取对象?还是应该从 RAM 请求调用某些函数的对象,这将导致缓存未命中和空闲 CPU 周期?从性能方面而言,与以上情况相比如何?
std::vector<A>
。它既易读又足够高效。 - Shoe