我正在阅读 this最近,其中指出:
Don’t assume that complicated code is necessarily faster than simple code.
代码复制如下:
例如,好
// clear expression of intent, fast execution
vector<uint8_t> v(100000);
for (auto& c : v)
c = ~c;
例如,坏 // intended to be faster, but is often slower
vector<uint8_t> v(100000);
for (size_t i = 0; i < v.size(); i += sizeof(uint64_t)) {
uint64_t& quad_word = *reinterpret_cast<uint64_t*>(&v[i]);
quad_word = ~quad_word;
}
我不确定坏例子的目的是什么,为什么是旨在更快 ?为什么会这样事实上往往更慢 ?
最佳答案
通过将指针转换为 64 位整数并对该整数执行按位运算,您可以将 C++ 代码执行的运算次数减少 8 倍。也就是说,所做出的假设是性能受用 C++ 代码编写的操作数。
关于c++ - 在 C++ Core Guidelines Per.4 中,为什么坏示例旨在更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63276055/