减少调用_m_default_append的次数

时间:2019-11-29 22:25:38

标签: c++ optimization vector

我目前正在尝试使C ++项目运行得更快。分析(使用Apple Instruments和Callgrind)提出了一个有趣的观点:

  • 在macOS上,函数std::vector::__append(创建新的默认对象并将其放在向量的末尾)表示执行时间的大部分时间
  • 在Ubuntu(VM)上,功能std::vector::_M_default_append(实质上具有相同的作用)是元凶。在这种情况下,它目前代表671,000,000个样本(而我最昂贵的函数是〜14,000)。

出于明显的原因,我想减少我花在这些append函数上的时间,因为它们确实很昂贵。我该如何实现?真正令我感到惊讶的是,我认为不会出现这些问题,因为我的所有向量都已构建并且经过resize()reserve()适当地构建了。

任何建议都值得赞赏!

0 个答案:

没有答案
相关问题