.net - 乘以逆是好是坏?

标签 .net algorithm optimization math

处理 double 数据类型时乘以倒数是好是坏?

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

MSIL 如何处理这个问题?

SquareInches = MMSquared / 645.16 
SquareInches = MMSquared * 0.0015500031000062000124000248000496

NB: 10K users will note that this is a duplicate of this question, which was deleted because the original question asker decided to berate everyone in the 'comments' section of the question.

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

请“取消选中”Community Wiki 以获得您的答案,因为我只是将其作为 CW 发布,这样它就不会被视为“声誉”抢夺。

相关问题:

Should I use multiplication or division?

最佳答案

乘以倒数更快。编译器不会自动优化它,因为它会导致精度损失很小。 (这实际上出现在 Walter Bright 经常光顾的 D 新闻组中,他明确表示编译器不会自动执行此操作。)您通常应该除法,因为它更具可读性和准确性。

如果您在一个循环中执行一段浮点代码十亿次并且您不关心精度的小损失并且您将除法多次乘以相同的数字,然后乘以倒数可以是一个很好的优化。实际上,在一些情况下,我已经在现实世界中获得了显着的加速,例如通过乘以逆函数所描述的情况,但这些是循环执行数十亿次的极端边缘情况,除了乘 float 之外几乎什么都不做。

关于.net - 乘以逆是好是坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/655537/

相关文章:

c++ - 寻找最快的方法来排序由 C++ 中的三个不同值组成的 2000 个项目的列表

c# - 如何向 C# XmlDocument 添加新的根元素?

.net - 如果文件已存在,如何增加文件名

c# - 如何使 decimal.TryParse 保留尾随零?

javascript - 如何在不溢出 RAM 的情况下为非常大的文件生成校验和并在 Javascript 中转换为 64 位?

java - 从具有非均匀权重的集合中绘制的实现

c# - 查询的技术和模式?

c# - 封装方法调用

c# - 静电会使它变慢吗

vba - 将字典清空到 Excel 工作表的最快方法