【发布时间】:2009-09-19 02:34:47
【问题描述】:
在 C++ 中使用标准库中的向量而不是 C 中的数组是否会降低性能?
【问题讨论】:
-
建议您对您的具体情况进行基准测试。
-
@Wheat,非常同意你的看法。
在 C++ 中使用标准库中的向量而不是 C 中的数组是否会降低性能?
【问题讨论】:
不,没有(前提是您通过优化编译,因此可以发生内联),前提是您的意思是使用 malloc 获得的动态大小的 C“数组”。
C 中固定大小的数组有一点优势,即它们的地址在链接后是固定的(如果是全局的),或者它们直接存在于堆栈上,而不是通过指向堆上某处的指针间接存在。我相信仍然没有性能差异;常量基地址并不比可变基地址快;两者都被加载到 CPU 寄存器中。
【讨论】:
唯一真正的区别是使用 std::vector 的访问是通过琐碎的函数。只要您使用适当的优化级别以使这些函数调用内联,它们就会是相同的。
【讨论】: