cost 294 ms
if 分支是否比 else 分支更快? - Is the if-branch faster than the else branch?

我发现了这个非常好的信息图,它粗略估计了用于某些操作的 CPU 周期。 在学习时,我注意到一个条目“if 的右分支”,我认为这是满足条件时“if”将采用的分支(编辑:正如评论中指出的“正确”实际上意味着“正确预测的分支” ). 这让我想知道 if 分支与 else 分支相比是否有任何(即使是很小的 ...

分支预测是纯粹的 cpu 行为,还是编译器会给出一些提示? - Is branch prediction purely cpu behavior, or will the compiler give some hints?

在 go 标准 package src/sync/once.go 中,最近的修订版更改了片段 至: 问题是,根据这个变化,热路径在代码中不再显式,这个变化对分支预测有不好的影响吗? go 编译器是否会在此 function 的后续运行中提供一些帮助,或者整个分支预测都在 cpu 上? 提交页面: ...

Google Vertex Auto-ML Forecast 每 30 分钟预测 2 小时 - Google Vertex Auto-ML Forecast every 30 mins predict 2 hours

目标每 30 分钟,我会得到一组新的价格相关数据: CurrentDatetime、CurrentPrice、Feature1、Feature2 我想预测从现在起 2 小时内的价格,所以 4x30 分钟(未来 4 步) 问题描述我对谷歌顶点自动机器学习预测在做什么以及我是否可以相信我得到的结果感到 ...

如何处理似乎取决于机器代码 position 的分支错误预测? - How to handle branch mispredictions that seem to depend on machine code position?

在尝试以 CSC 格式对简单稀疏单元下三角反向求解的实现进行基准测试时,我观察到了奇怪的行为。 性能似乎差异很大,具体取决于汇编指令在可执行文件中的位置。 我在同一问题的许多不同变体中观察到这一点。 一个最小的例子是获得重复的实施指令void lowerUnitTriangularTranspos ...

Rust 泛型参数和编译时间 if - Rust generic parameters and compile time if

使用 C++ 模板, if constexpr我发现了一个我非常喜欢的技巧:假设你有一个 function 带有一些已知编译时的可调选项,我可以写类似 现在我认为这在您保存的代码行方面相当方便(使用 n 个选项,一个有 2^n 个不同的功能)以及在性能方面,因为这些if s 是在编译时评估的(例如 ...

简单 if 语句的分支预测中的 Visual Studio 编译器有多好? - How good is the Visual Studio compiler at branch-prediction for simple if-statements?

以下是一些 c++ 伪代码作为示例: 显然,一旦 if 语句评估为 true 并运行其中的代码,甚至没有理由再次执行检查,因为结果将是相同的。 编译器是否足够聪明,可以识别这一点,还是会继续检查每次循环迭代的 if 语句,并可能再次将 importantFlag 重复分配为 true? 如果循环 ...

x86 上是否有自动 L1i 缓存预取? - Is there automatic L1i cache prefetching on x86?

我查看了关于分支目标预测器的 wiki 文章; 这有点令人困惑: 我认为当 CPU 决定接下来要获取哪些指令(进入 CPU 管道执行)时,分支目标预测器就会发挥作用。 但是文章提到了一些这样的点: 指令缓存获取指令块 扫描块中的指令以识别分支 那么,指令缓存(我想象的== L1i)(预 ...

RISCV 无分支编码 - RISCV branchless coding

在 Intel AVX 上,可能存在无分支代码。 您可以计算这两种情况,然后根据条件混合结果,而不是对 case0 或 case1 进行分支。 AVX 使用vblendps指令为浮点数执行这 8 种方式。 您也可以使用 x86 指令CMOVcc以标量方式执行此操作,该指令有条件地执行移动操作。 注 ...

为什么 rv32gc 使用 RISC-V 分支优化无分支代码? - Why is rv32gc optimising branchless code with branches for RISC-V?

让我们尝试定义一个 function,它返回两个值 x 和 y 中的最大值。 这些公式有效的充分条件是,对于有符号整数, –2^30 <= x, y <= 2^30 – 1 ,对于无符号整数, 0 <= x, y <= 2^31 – 1 (即,只需要在减少的 integer ...

我可以用我的代码改进分支预测吗? - Can I improve branch prediction with my code?

这是一个对任何平台、语言或编译器都开放的天真的一般问题。 虽然我对 Aarch64、C++、GCC 最好奇。 当在依赖于 I/O state(编译器无法预测)的程序流中编写一个不可避免的分支时,我知道一个 state 比另一个更有可能,我如何向编译器表明这一点? 这是否更好 比这个? 如果通信协议 ...

从人为子程序返回时的 BR/RET 时间差异 - BR/RET timing discrepancy when returning from contrived subroutine

在我尝试 64 位 ARM 架构的冒险过程中,我注意到一个特殊的速度差异,具体取决于是否使用br或ret从子程序返回。 该子例程的目的是通过使foo返回到首先调用foo的指令(即x30指向的指令之前的指令),使foo的调用者“重新进入” foo w0次。 在一些粗略的时间安排下,当w0的值足够高时, ...

如何编写本地分支预测器? - How to write a local branch predictor?

我正在尝试使用 runspec 测试我的本地分支预测器,但只发现令人失望的结果。 到目前为止,我已经尝试使用 64 个术语的 LHT,当 LHT 已满时,我使用 FIFO 策略替换 LHT 中的一个术语。我不知道是我使用了一个很小的 LHT 还是我不正确的替换策略使其精度很差,无论如何,它只有 6 ...

如果主体为空,是否评估 Ada 函数参数? - Are Ada function arguments evaluated if the body is empty?

根据这份声明: 而这个Trace.Debug实现: 我有一个可以管理多个级别日志的软件,我想知道在Logger.Enabled等于False情况下是什么行为。 我有很多日志调用,有时需要评估复杂的字符串,而且我在实时系统上,所以我不想浪费时间来评估不会打印的字符串。 我想知道编译器是否优 ...

流水线停顿优化::无分支编程 - pipeline stall optimize :: no branch programing

我研究了分支预测未命中的管道停顿,所以我让我的一些代码避免停顿并且更快。 但我不知道这种优化是否真的重要或让事情变得更糟。 我不知道 muschabout asm 或 cpus。 我添加了一些我的反汇编代码。 那么伙计们,我是否正确优化了程序? 是不是比以前快了? 你能告诉我如果我这样优化代码,应该 ...

constexpr function 编译时未知的参数布尔值 C++ - constexpr function params for not known at compile time booleans C++

我需要运行带有 N boolean 变量的 function,我想让它们成为 constexpr 以消除比较并保存分支预测失败的代码。 我的意思是: 由于 b1..bn 变量只是 boolean 个变量并且可能只有 2 个状态,我可以这样写: 问题很明显,我需要 64 次调用 5 个变量。有什么解 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM