缓存 std::vector 的大小是否更快

Is it faster to cache the size of std::vector

本文关键字:是否 std vector 缓存      更新时间:2023-10-16

我正在寻找一个C++类,它环绕std::vector并存储向量的大小。每次修改向量时,该类都会更新此大小,从而导致大量冗余代码(因为 size() 方法始终提供最新的大小)。 这真的更快,还是编译器会优化 size() 的迭代使用?

首先,与之前帖子中所述的不同,我见过的std::vector(MS 和 g++)的实现确实如此缓存大小。 另一方面,它可以计算通过简单的指针减法,以及您对缓存所做的任何操作大小几乎肯定会增加比节省更多的开销。

std::vector::size具有恒定的时间复杂度,所以是的,它已经存储在向量中并且代码是多余的。

在我看到的所有实现中,缓存会更慢。这只是浪费内存带宽。

据我所知,vector::size的标准库实现只是返回缓存大小,而不是每次都重新计算它。

相关文章: