我刚刚讨论了QVector::reserve
。即使您对最终尺寸的估计错误也应该使用它吗?
在我们特定的情况下,几乎每次都会有至少几个要素的估算。估计数n的实际元素数的最坏情况范围是[1,2 * n]。 reserve
还是可以提高性能,还是误判的惩罚太大?
请注意,在这种情况下,我们无法使用std::vector
。我不知道QVector::reserve
和std::vector::reserve
是否做其他事情。
答案 0 :(得分:1)
这类问题的答案通常是对其进行度量/剖析。或者,如果它不在关键路径上,也不要打扰,因为您甚至可能不会注意到差异。
如果您的RAM并不低(并且并不真正在意它的使用),则可以“预留”该数量以完全适合所有元素。如果不是那么大,那么性能可能会稍有改善。而且,如果向量仅填充一次,然后直接存储在某个位置而没有任何修改,则可以稍后“缩小以适合”它。
但是请注意,reserve
(对于QVector
和vector
来说都是很错误的用法。您创建容器的唯一安全地点是不久之后。在“传入”对象(即函数参数)上调用它几乎总是错误的,并且通常会降低整体性能。