一尘不染

乘以逆是更好还是更坏?

algorithm

当处理 double 数据类型时,乘以逆是好是坏?

哪种方法 更快 ?哪种方式使用较少的内存?首选哪种方式?

MSIL如何处理呢?

SquareInches = MMSquared / 645.16 
SquareInches = MMSquared * 0.0015500031000062000124000248000496

注意:1 万名用户将注意到,这是该问题的重复项,已删除,因为最初的提问者决定在问题的“评论”部分对所有人进行谴责。

该问题被重新发布,因为它是一个“好”问题。

请“取消选中”社区Wiki,以获取您的答案,因为我仅将其发布为CW,因此不会将其视为“声誉”争夺者。


阅读 245

收藏
2020-07-28

共1个答案

一尘不染

乘以倒数更快。编译器不会自动对此进行优化,因为这可能会导致精度损失很小。(这实际上是D新闻组WalterBright的常客出现的,他明确表示编译器不会自动执行此操作。)您通常应该划分内容,因为它更具可读性和准确性。

如果您在一个循环中执行十亿次浮点代码, 又不关心精度的微小损失,
将相同的数除以数次,那么乘以逆数可能是一个很好的优化。实际上,在某些情况下,例如在乘以逆运算所描述的情况下,我已经获得了实际的显着加速,但是这些极端情况在循环中执行了数十亿次,除了乘上浮点数外几乎什么也没做。

2020-07-28