我刚刚讨论了QVector::reserve。即使您对最终大小的估计错误也应该使用它吗?

在我们的特定情况下,几乎每次都会有至少几个要素的估算。估计数n的实际元素数的最坏情况范围是[1,2 * n]。 reserve是否仍然可以提高性能,还是误估计的代价太大?

请注意,在这种情况下,我们无法使用std::vector。我不知道QVector::reservestd::vector::reserve是否有所不同。

最佳答案

这类问题的答案通常是对其进行度量/剖析。或者,如果它不在关键路径上,也不要打扰,因为您甚至可能不会注意到差异。

如果您的RAM并不低(并且不真正在意它的使用),则可以“预留”该数量以完全适合所有元素。如果不是那么大,那么性能可能会稍有改善。而且,如果 vector 仅填充一次,然后直接存储在某个位置而没有任何修改,则可以稍后“收缩以适合”它。

但是请注意,reserve(QVectorvector都使用)经常被错误地使用。唯一安全的地方是在创建容器后不久。在“传入”对象(即函数参数)上调用它几乎总是错误的,并且通常会降低整体性能。

关于c++ - 即使不知道确切的元素数量,也可以调用QVector::reserve吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51764762/

10-12 20:36