什么是 std::vector::_emplace_back_slow_path / std::vector::_push_back_slow_path?
What is std::vector::_emplace_back_slow_path / std::vector::_push_back_slow_path?
在使用调用分析器时,我注意到 std::vector::_emplace_back_slow_path
中的运行成本和分配数量很高。因为我关心性能,所以我想这样说"fast path"。我做错了什么?
Looking at the implementation,如果需要重新分配,"slow path" 是采用的路径:
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
。
在使用调用分析器时,我注意到 std::vector::_emplace_back_slow_path
中的运行成本和分配数量很高。因为我关心性能,所以我想这样说"fast path"。我做错了什么?
Looking at the implementation,如果需要重新分配,"slow path" 是采用的路径:
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
。