微优化人员的前导
记住:
“程序员会浪费大量的时间来思考或担心程序中非关键部分的速度,而这些提高效率的尝试在考虑调试和维护时实际上会产生很大的负面影响。我们应该忘记效率很小的问题,比如97%的时间:过早的优化是万恶之源。然而,我们不应在这个关键的3%中放弃我们的机会“。
(多亏了变态(全部报价)
不要使用C数组,而不是向量(或其他什么),因为你认为它更快,因为它应该是低级的。你就错了。
默认使用向量(或适合您的需要的安全容器),然后如果分析器认为这是一个问题,看看是否可以通过使用更好的算法或更改容器来优化它。
这就是说,我们可以回到原来的问题。
静态/动态阵列?
C+数组类比低级C数组表现得更好,因为它们对自己了解很多,并且能够回答C数组不能回答的问题。更重要的是,它们通常是使用模板和/或内联编写的,这意味着在调试中出现的大量代码解决了在发布版本中生成的很少或没有代码,这意味着与其内置的不太安全的竞争没有区别。
总而言之,它分为两类:
动态阵列
使用指向malloc ed/新ed数组的指针最多将与std:vectorv版本一样快,而且安全性要低得多(请参阅利特的职位).
所以使用std:载体。
静态阵列
使用静态数组最多是:
所以请使用STD:数组.
未初始化存储器
有时,使用vector
而不是原始缓冲区会导致可见成本,因为vector
将在构造时初始化缓冲区,而它替换的代码没有,正如所述伯尼在他的回答.
如果是这种情况,则可以使用unique_ptr
而不是vector
或者,如果代码线中的情况不例外,则实际上编写一个类。buffer_owner
这将拥有该内存,并允许您轻松、安全地访问它,包括调整大小(使用realloc
),或者任何你需要的东西。