使用十进制数有理数是否会影响 Perl 6 的性能

2024-05-17

据我了解,Perl 6 尽可能将小数实现为有理数,以避免大多数其他语言中存在的浮点问题。

有人做过基准测试或了解这样做的性能损失吗?


使用十进制数有理数是否会影响 Perl 6 的性能

我认为最有用的总体答案是“不,不是真的,但让我详细说明一下”。

如果您不想关心准确性或性能

如果您希望 P6 自动保持小数计算相当准确和快速,那么只需使用Rat https://docs.perl6.org/type/Rats.

如果计算涉及一个或多个 P6 的表达式的总结果的分母Rats 溢出 64 位则 P6 会自动将结果切换为近似值Num https://docs.perl6.org/type/Num(P6 的实现双浮球 https://en.wikipedia.org/wiki/Double-precision_floating-point_format)以保持合理的绩效。

如果您想保证最大性能

您可以直接使用浮点数据类型作为小数。

这产生的浮点性能通常比理性性能更快。

例如,3.141592e0不是有理数/十进制文字,而是Num/浮点文字。

如果你想保证100%的准确性

如果您使用内置有理数据类型之一(有限精度Rat班级;任意精度FatRat class https://docs.perl6.org/type/Rat;或底层可参数化精度Rational role https://docs.perl6.org/type/Rational) 那么如果计算符合分母,对该数据的数值运算将 100% 准确。

Read 有关理性数据类型的维基百科页面 https://en.wikipedia.org/wiki/Rational_data_type作为理解使用有理类型对性能影响的起点。


有人做过基准测试或了解这样做的性能损失吗?

拉里·沃尔 (Larry Wall) 做出的设计决策导致小数默认被视为有理数。他讨论了 #perl6 上的性能影响。一些有用的搜索:

如果我找到有用基准的链接,我会稍后添加它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用十进制数有理数是否会影响 Perl 6 的性能 的相关文章

随机推荐