我有一个简单的函数,将字节块复制到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::copy或std::back_inserter实现.
标准库实现是在考虑性能的情况下编写的,但只有在优化开启时才能实现性能.
Run Code Online (Sandbox Code Playgroud)//This reduces the performance dramatically if the optimization is switched off.
试图通过优化关闭来测量函数性能与毫无意义一样,如果宇宙中没有剩余质量,那么问自己万有引力定律是否仍然是真的.