23

对于激烈的数字运算,我正在考虑使用定点而不是浮点。当然,定点类型的大小有多少字节,它将在什么 CPU 上运行,我是否可以使用(对于英特尔)MMX 或 SSE 或任何新事物出现……

我想知道这些天浮点运行速度是否比以往任何时候都快,是否值得考虑定点?是否有一般的经验法则,我们可以说它会影响超过几个百分点?35,000 英尺的数值性能概述是什么?(顺便说一句,我假设大多数计算机都使用通用 CPU,而不是 DSP 或专用嵌入式系统。)

4

7 回答 7

19

它仍然值得。浮点比过去快,但定点也是。如果您关心超出 IEEE 754 所保证的精度,那么固定仍然是唯一的方法。

于 2008-10-05T02:55:34.323 回答
17

在处理大量数据的情况下,定点的内存效率可以提高一倍,例如,一个四字节长的整数而不是一个八字节的双精度数。大型地理空间数据集中经常使用的一种技术是将所有数据减少到一个共同的来源,以便可以处理最高有效位,并使用定点整数处理其余数据。浮点仅在点确实浮动时才重要,即您正在以非常高的精度处理非常广泛的数字。

于 2008-10-07T12:37:08.860 回答
11

使用固定小数的另一个好理由是舍入更简单且可预测。大多数财务软件使用定点任意精度小数和半偶数舍入来表示货币。

于 2008-10-05T08:18:42.203 回答
5

使用定点几乎总是更快(x86、奔腾、68k 和 ARM 的经验)。但是,它也可以取决于应用程序类型。对于图形编程(定点的主要用途之一),我已经能够使用预构建的余弦表、日志表等来优化代码。而且基本的数学运算也被证明更快。

对财务软件的评论。在较早的答案中说过,定点对于财务计算很有用。以我自己的经验(大型金库管理系统的开发和信用卡处理的丰富经验)我不会使用定点。使用浮点数或定点数都会出现舍入误差。我们总是使用整数来表示货币金额,计算可能的最低金额(欧元或美元为 1c)。这确保不会丢失部分金额。在进行复杂计算时,会将值转换为双精度数,应用特定于应用程序的舍入规则,并将结果转换回整数。

于 2008-10-05T12:38:18.110 回答
4

当硬件不支持浮点或硬件实现很糟糕时使用定点。

为它上课时也要小心。由于(非)必要的类副本,在进行分析时,您认为很快的东西实际上可能会变成狗。然而,这是另一个问题。

于 2008-10-05T08:40:21.083 回答
1

使用定点的另一个原因ARM是设备,如手机和平板电脑,缺乏 FPU(至少其中很多)。

对于开发实时应用程序,使用定点算法优化函数是有意义的。FFT(快速傅立叶变换)的实现对图形非常重要,它的改进基于依赖浮点运算的效率。

于 2012-05-28T11:07:48.557 回答
-1

由于您使用的是通用 CPU,我建议不要使用定点,除非性能对您的应用程序非常重要,以至于您必须计算每个 tic。当你有一个 CPU 时,实现定点和处理溢出等问题的麻烦是不值得的,它会为你做这件事。

恕我直言,仅当您使用没有硬件支持浮点运算的 DSP 时,才需要定点。

于 2008-10-05T03:10:43.980 回答