【发布时间】:2014-05-30 21:39:47
【问题描述】:
在初始化大量数据结构时,对于内存关键应用程序的内存管理点很少,我是否应该选择 float* 而不是 QVector?
特别是,我需要在一个循环中写入结构,并进行多次迭代。 QVector 的 operator[] 访问器执行写时复制。使用float* 并访问其元素是否更值得争论?
【问题讨论】:
-
对其进行基准测试。优化编译器无论如何都会使大多数事情变得无关紧要,因此最好选择最清晰的选项,除非它明显较慢。当然,如果您有大量向量列表,则最好使用矩阵(无论是在性能方面还是在概念上)。
-
无论如何,向量只是一个指向数组的指针。当您超出容量时,最大的区别将是调整阵列的大小。自己使用
float*,您可以明确限制和定义数组的大小。如果事先知道向量的最大尺寸,可以手动改变它的容量,享受向量类的界面,没有调整大小时间的缺点。 -
使用 QVector 有开销吗?我不需要调整大小功能。我正在使用 QVector 并且应用程序太消耗内存。瓶颈是数据结构的分配
-
我们需要更多的上下文来回答这个问题。
标签: c++ qt memory optimization memory-management