gpt4 book ai didi

c++ - 可能对 C++ 有更好的期望

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:26 29 4
gpt4 key购买 nike

根据C++ branch-aware prediction,我准备了一个测试,看看它的效果如何。

所以,在对照样本中,我写:

int count=0;
for (auto _ : state) {
if(count%13==0) {
count+=2;
}
else
count++;
benchmark::DoNotOptimize(count);
}

C++11 分支预测中,我写:

#define LIKELY(condition) __builtin_expect(static_cast<bool>(condition), 1)
#define UNLIKELY(condition) __builtin_expect(static_cast<bool>(condition), 0)

int count=0;
for (auto _ : state) {
if(UNLIKELY(count%13==0)) {
count+=2;
}
else
count++;
benchmark::DoNotOptimize(count);
}

C++20 中,

int count=0;
for (auto _ : state) {
if(count%13==0)[[unlikely]]{
count+=2;
}
else
count++;
benchmark::DoNotOptimize(count);
}

不幸的是,quick-bench 不支持它。但无论如何,我把它留在那里。

现在,获取 gcc 下的基准和 clang对于这样一个基本示例没有任何效果。

我做错了什么吗?

c++ branch-aware prediction

最佳答案

您的工作台没有任何差异,因为 CPU 的分支预测与 gcc __builtin_expect 一样好,可以优化您的简单示例。

有关什么是分支预测的完整深入解释,请参阅 this excellent answer on Stack Overflow .

关于c++ - 可能对 C++ 有更好的期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52539561/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com