为什么std :: vector <uint8_t> :: insert比使用MSVC 2015编译器的std :: copy工作快5倍?

Ale*_*sky 1 c++

我有一个简单的函数,将字节块复制到std :: vector:

std::vector<uint8_t> v;

void Write(const uint8_t * buffer, size_t count)
{
    //std::copy(buffer, buffer + count, std::back_inserter(v));

    v.insert(v.end(), buffer, buffer + count);
}

v.reserve(<buffer size>);
v.resize(0);

Write(<some buffer>, <buffer size>);
Run Code Online (Sandbox Code Playgroud)

如果我使用std::vector<uint8_t>::insert它比我使用它快5倍std::copy.

我尝试使用MSVC 2015编译此代码,启用和禁用优化并获得相同的结果.

看起来有点奇怪std::copystd::back_inserter实现.

YSC*_*YSC 5

标准库实现是在考虑性能的情况下编写的,但只有在优化开启时才能实现性能.

//This reduces the performance dramatically if the optimization is switched off.
Run Code Online (Sandbox Code Playgroud)

试图通过优化关闭来测量函数性能与毫无意义一样,如果宇宙中没有剩余质量,那么问自己万有引力定律是否仍然是真的.