任何相当于"扩展"对于C#?

时间:2012-09-23 01:15:20

标签: c# performance double floating-point-precision

我正在处理Mandelbrot screensaver的新版本,而且我的浮点精度不足 - 简单的double值没有足够的重要数据来满足我的需求。

更重要的数字=更大程度的放大分形

当我在Delphi 7中编写这个屏幕保护程序的版本时,我使用了extended浮点类型,大小为80位。

在.NET中,我可以切换到decimal,但是这对性能的影响非常糟糕,分形生成速度减慢了20倍左右。

.NET的扩展是否相同?或者,是否有任何数字类型的精度高于 double 仍然使用FPU进行评估,因此没有十进制的高性能?

更新

我的屏幕保护程序已设法按许多(很多!)数量级缩放分形;目前,只有当使用的数字类型无法分隔相邻像素的纵坐标时,它才会重置为基础分形。从双倍扩展的改进中得到的额外16位精度将使我的尺寸增加近16倍。

至于性能,我的算法已经设法消除了所需数学的95-99%(与计算许多像素的简单实现相比),同时保留了分形的完整性。

1 个答案:

答案 0 :(得分:4)

  

在64位平台上,Extended类型是Double的别名,其中   只有8个字节。在32位平台上,Extended数字表示为10个字节(80位)。

这意味着即使您的Delphi程序在64位平台上也可能表现不佳。

如果您需要超过64位的数字数据类型,请转到decimal并优化算法以提高性能。