什么是std :: vector :: _ emplace_back_slow_path / std :: vector :: _ push_back_slow_path?

时间:2018-07-21 15:08:40

标签: c++ stdvector libc++

使用呼叫分析器时,我注意到std::vector::_emplace_back_slow_path中的运行时成本很高,分配数量也很多。因为我担心性能,所以我想这样说“快速路径”。我在做什么错了?

1 个答案:

答案 0 :(得分:3)

Looking at the implementation,“慢速路径”是需要重新分配时采用的路径:

vector<_Tp, _Allocator>::emplace_back(_Args&&... __args)
{
    if (this->__end_ < this->__end_cap())
    {
        // This is the code that you could call the "fast path"
    }
    else
        __emplace_back_slow_path(_VSTD::forward<_Args>(__args)...);
}

这也适用于std::vector::_push_back_slow_path