c++ - 在 C++ Core Guidelines Per.4 中,为什么坏示例旨在更快?

标签 c++ performance cpp-core-guidelines

我正在阅读 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/

相关文章:

c# - c++ dll结构到c#

c++ - Opencl atomic_add() 函数返回错误值

c++ - 模板化类的格式错误的非模板化方法的实例化

python - 如何使 IF 语句更加高效?

python - 如何使用 bool 行的二维数组来过滤另一个二维数组?

c++ - 通过一串字符并提取数字?

python - 快速找到大图像中连通分量的最小和最大坐标

c++ - 使用控制台和 MSBuild 的 Cpp Core Guidelines Checker

c++ - 这个例子中的 Cpp 核心指南浪费了什么?