你可以用switch语句使用builtin_expect吗?
Can you use builtin_expect with switch statement

我在一些时间关键的代码中有一个switch语句。 我试图使用__builtin_expect对其进行优化,但似乎没有工作。 我想知道是否有人可以告诉我,如果我错过了一些...

如何取消分支预测?
How to cancel branch prediction?

从阅读中我看到接下来的两个引号:第一个引用:一个典型的不可预知分支行为的情况是比较结果依赖于数据。 第二个报价:没有分行...

Haswell,Sandy Bridge,Ivy Bridge和Skylake的BTB大小?
BTB size for Haswell, Sandy Bridge, Ivy Bridge, and Skylake?

有什么方法可以确定,或者我可以找到Haswell,Sandy Bridge,Ivy Bridge和Skylake Intel处理器的分支目标缓冲区大小的资源?

通过计算条件提前避免拖延管道
Avoid stalling pipeline by calculating conditional early

在谈论ifs的表现时,我们通常会谈论错误预测如何拖延管道。 我所看到的推荐解决方案是:相信通常情况下的分支预测器...

如果Thens比乘法和赋值更快?
Are If Thens faster than multiplication and assignment?

我有一个快速的问题,假设我有以下代码,例如10次以类似的方式重复。 如果等等,那么数字=数字+ 2 ^ n结束如果评估会更快:...

尝试着名的分支预测示例有时会导致奇怪的时代
Trying famous branch-prediction example sometimes results in strange times

我试图在这个着名的问题中复制这个例子。 我的代码如下所示:#![feature(test)] extern crate rand; 外部箱测试; 使用测试:: Bencher; 使用rand :: {thread_rng,Rng}; 键入...

分支预测失误是否会刷新整个管道,即使是非常短的if语句正文?
Does a branch misprediction flush the entire pipeline, even for very short if-statement body?

我读过的所有内容似乎都表明分支预测失误总是会导致整个管道被刷新,这意味着很多浪费的周期。 我从来没有听到有人提到任何例外......

在java for循环中进行分支预测
Branch prediction in a java for loop

我在if条件旁边看到此注释://分支预测支持JavaFX SkinBase类的源代码中最常用的条件。 受保护的double computeMinWidth(双高度,...

将一个整数的位X置为另一个不带分支的整数的位Y?
Set bit X of an integer to bit Y of another integer without branching?

下面的copy_bit函数可以简化为out [out_bit] = in [in_bit]之类的东西吗? (即不使用if语句)template <typename T> inline void copy_bit(T&out,const T in,...

f(x)的无分支实现:= if x == 0 then 0 else(x * log(x))
Branch-free implementation of f(x) := if x == 0 then 0 else (x * log(x))

我有这个C函数:double f(int x){if(x <= 0)return 0.0; 否则返回x * log(x); }我正在调用一个紧密的循环,并希望摆脱分支... ...

分支预测数据在哪里/如何存储?
Where/how is branch prediction data stored?

我一直想知道预测数据存储在何处/如何? 有限制吗? 它只是最近的分支机构吗? 我主要关心英特尔架构,但任何我可以了解的任何...

分支目标缓冲区检测到哪个分支预测失误?
What branch misprediction does the Branch Target Buffer detect?

我目前正在查看可以检测分支预测错误的CPU管道的各个部分。 我发现这些是:分支目标缓冲区(BPU CLEAR)分支地址计算器(BA CLEAR)...

C / C ++如果语句评估最有效
C/C++ most efficient if statement evaluation

几乎99.9%的时间是X,但我需要处理Y和Z. 尽管X条件的主体是空的,但我认为它应该比可能检查2个其他条件更快Y ...

分支预测变量是否用这个来引入?
Does the branch predictor kick in with this?

大多数(如果不是所有的)现代处理器都使用一种称为“分支预测”的技术,通过它可以猜测if-then-else分支中的什么路径。 考虑到这个计划,我有一个问题。 比方说...

投机执行是否会涉及昂贵的操作?
Will Speculative Execution Follow Into an Expensive Operation?

如果我理解正确的分支(x86),处理器有时会推测性地采用代码路径并执行指令并“取消”错误路径的结果。 如果...中的操作

分支预测与分支目标预测
branch prediction vs branch target prediction

我是否理解这个权利,如果陈述更多依赖于分支预测,并且v-table查找更依赖于分支目标预测? 关于V表,没有“分支......

分支预测和分支目标预测优化
Branch prediction and branch target prediction optimization

我的代码经常调用具有多个(不可预知的)分支的函数。 当我剖析时,我发现它是一个小瓶颈,在有条件的JMP上使用了大部分CPU时间。 ...

使用英特尔最终分支记录的开销是多少?
What is the overhead of using Intel Last Branch Record?

最后分支记录是指存储与最近执行的分支有关的源地址和目标地址的寄存器对(MSR)的集合。 HTTP://css.csail.mit.edu/6.858/2012/readings / ...

微优化一个c ++比较函数
Micro-optimizing a c++ comparison function

我有一个Compare()函数,看起来像这样:inline bool Compare(bool greater,int p1,int p2){if(greater)return p1> = p2; 否则返回p1 <= p2; }我决定优化以避免...

我可以在C中使用GCC的__builtin_expect()和三元运算符
Can I use GCC's __builtin_expect() with ternary operator in C

GCC手册仅显示了__builtin_expect()放置在'if'语句的整个条件周围的示例。 我也注意到,如果我使用它,GCC不会抱怨,例如,...

分支预测会导致非法指令吗?
Can branch prediction cause illegal instruction?

在下面的伪代码中:if(rdtscp由硬件支持){调用“rdtscp”指令} else {调用“rdtsc”指令}假设CPU不支持rdtscp指令......

提示断言中的分支预测
Hint for branch prediction in assertions

我有一个自定义ASSERT(...)宏,我在C ++应用程序中使用。 #include <stdlib.h> #include <iostream> /// ASSERT(expr)检查expr是否为true。 如果不是,则会记录错误详细信息/// ...

分支预测不起作用吗?

在参考这个问题时,答案指定未排序数组需要更多时间,因为它未能执行分支预测测试。 但如果我们在程序中做一些小改动:import java.util ....

在CPU仿真中使用开关盒时如何处理分支预测

我最近在这里读到这个问题为什么处理排序后的数组比未排序的数组更快? 并发现答案是绝对引人入胜的,它彻底改变了我对...的看法。

我可以测量现代英特尔酷睿CPU上的分支预测故障吗?

这个问题及其答案,最近被标记为史诗般的答案,促使我想知道; 我可以根据其CPU分支来测量Windows中正在运行的应用程序的性能...

分支预测:编写代码来理解它;

我试图通过测量运行具有可预测分支的循环与具有随机分支的循环的时间来很好地理解分支预测。 所以我写了一个需要大数组的程序......

英特尔x86 0x2E / 0x3E前缀分支预测实际使用?

在最新的英特尔软件开发手册中,它描述了两个操作码前缀:组2>分支提示0x2E:分支未采用0x3E:分支采用这些允许显式分支预测...

我如何制作无分支代码?

与此答案相关:https://stackoverflow.com/a/11227902/4714970在上面的答案中,提到了如何通过避免分支来避免分支预测失败。 用户演示这个...

分支预测和零点划分

我写的代码如下所示... if(denominator == 0){return false; } int result = value / denominator; ......当我想到CPU中的分支行为时。 https://开头...

为什么这个C ++函数会产生如此多的分支错误预测?

设A是一个包含奇数个零和一个数组的数组。 如果n是A的大小,那么A被构造为使得第一个ceil(n / 2)元素为0并且剩余的元素为1.因此,如果n = 9,则A ...

无分支内部合并比内部合并分支慢

我最近问了一个关于Code Review的问题来查看一个名为QuickMergeSort的排序算法。 我不会详细介绍,但是在某个时候算法会执行一个内部mergesort:而不是......

支持分支的编程

我正在阅读该分支,预测失误可能是应用程序性能的一个热点瓶颈。 正如我所看到的,人们通常会显示汇编代码,揭示问题并说明......

便携式分支预测提示

有没有分支预测提示的便携方式? 考虑下面的例子:if(unlikely_condition){/ * ..A .. * /} else {/ * ..B .. * /}这是否与......不同

流优于传统环路以获得最佳性能?

我刚刚阅读关于分支预测,并想尝试如何使用Java 8 Streams。 然而,Streams的表现总是比传统的循环更糟。 int ...

在Java中,可以快于&&?

在这段代码中:if(value> = x && value <= y){当value> = x和value <= y可能为true时,没有特定的模式,将使用&运算符比...更快

GCC是否有编译器提示强制分支预测始终以某种方式进行?

对于英特尔架构,有没有办法指示GCC编译器生成的代码总是强制分支预测在我的代码中特定的方式? 英特尔硬件甚至是否支持? ...

为什么(a * b!= 0)比Java中的(a!= 0 && b!= 0)快?

我在Java中编写一些代码,在某种程度上,程序的流程由两个int变量“a”和“b”是否为非零(请注意:a和b从不为负,而从不在...内

为什么处理排序的数组比不排序的数组更快?
Why is it faster to process a sorted array than an unsorted array?

这是一个似乎非常特别的C ++代码。 由于一些奇怪的原因,奇迹般的排序数据使得代码几乎快了六倍。 #include <algorithm> #include <ctime>#...
1