gpt4 book ai didi

java - 浮点除法和预先检查值 if eq 的效率

转载 作者:行者123 更新时间:2023-12-02 04:59:46 25 4
gpt4 key购买 nike

我遇到的情况是,我可能需要对某个值应用乘数才能获得正确的结果。这涉及使用浮点除法计算值。

我认为在对这些值执行浮点逻辑之前检查这些值是一个好主意,以节省处理器时间,但是我不确定无论哪种方式它在运行时的效率如何。

我假设 if 检查是 1 或 2 条指令(自从汇编类以来已经有一段时间了),并且浮点运算将远不止于此。

//Check 
if (a != 10) { //1 or 2 instructions?
b *= (float) a / 10; //Many instructions?
}
大多数情况下,

a 为“10”,但也有少数情况并非如此。即使a等于除数,浮点除法也会花费很多周期吗?

前面带有 if 语句的代码会比不带 if 语句的下一个代码执行效率更高吗?

//Don't check
b *= (float) a / 10; //Many instructions?

当然,无论哪种方式都不会有任何明显的差异,但是我很好奇当除数等于被除数时浮点乘法的行为,以防处理器负担过重。

最佳答案

假设这是在某个极其紧密的循环中,执行了数十亿次,因此 1-2 条指令的差异很重要,否则您可能不应该打扰 -

是的,您每次权衡额外检查的成本与检查正确时节省的成本是正确的。但我的猜测是,它必须是真实的,不仅要克服额外的开销,还要克服引入分支的事实,这最终会通过 JIT 中 CPU 中的管道停顿来降低速度- 编译后的代码比您通过其他方式获得的代码要多。

如果a == 10很多,我想有一种更好更快的方法可以在代码的前面以某种方式利用它。

关于java - 浮点除法和预先检查值 if eq 的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8856915/

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