【问题标题】:Performance penalty for using C++ vector instead of C array使用 C++ 向量而不是 C 数组的性能损失
【发布时间】:2009-09-19 02:34:47
【问题描述】:

在 C++ 中使用标准库中的向量而不是 C 中的数组是否会降低性能?

【问题讨论】:

  • 建议您对您的具体情况进行基准测试。
  • @Wheat,非常同意你的看法。

标签: c++ arrays vector std


【解决方案1】:

不,没有(前提是您通过优化编译,因此可以发生内联),前提是您的意思是使用 malloc 获得的动态大小的 C“数组”。

C 中固定大小的数组有一点优势,即它们的地址在链接后是固定的(如果是全局的),或者它们直接存在于堆栈上,而不是通过指向堆上某处的指针间接存在。我相信仍然没有性能差异;常量基地址并不比可变基地址快;两者都被加载到 CPU 寄存器中。

【讨论】:

  • 这个答案是错误的!
【解决方案2】:

唯一真正的区别是使用 std::vector 的访问是通过琐碎的函数。只要您使用适当的优化级别以使这些函数调用内联,它们就会是相同的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2010-09-11
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    相关资源
    最近更新 更多