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

时间:2013-01-28 16:18:09

标签: c++ caching optimization hoisting

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

4 个答案:

答案 0 :(得分:10)

首先,不同于之前发布的内容, 我见过std::vector的实现(MS和g ++) 缓存大小。另一方面,它可以计算 通过简单的指针减法,以及你要做的任何缓存 这个大小几乎可以肯定会增加更多的开销。

答案 1 :(得分:6)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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