【发布时间】:2013-08-26 19:05:10
【问题描述】:
所以,我用 XNA 做了一个简单的流体动力学模拟,我得到了非常准确的波状行为。但是当波变得越来越小,并且在某个点达到 -4.0E-43 或更小的幅度时,应用程序开始严重滞后。 c# 是否切换到一些愚蠢的舍入算法或其他东西?我没有观察到任何 NaN,也没有任何异常。哦,模拟循环在单独的线程中运行。
【问题讨论】:
标签: performance floating-point numbers lag
所以,我用 XNA 做了一个简单的流体动力学模拟,我得到了非常准确的波状行为。但是当波变得越来越小,并且在某个点达到 -4.0E-43 或更小的幅度时,应用程序开始严重滞后。 c# 是否切换到一些愚蠢的舍入算法或其他东西?我没有观察到任何 NaN,也没有任何异常。哦,模拟循环在单独的线程中运行。
【问题讨论】:
标签: performance floating-point numbers lag
C# 不是这里的罪魁祸首。 Denormal numbers 是。
这些是大小在 0 和 2-126 (1.175494351e-38) 之间的数字,它们不以标准(或“正常”)浮点格式存储。实际上,它们实际上存储为乘数为 2-149 的定点数。
因为它们很少见并且需要不同的算法,所以涉及非正规数的运算不会优化到与正常运算相同的程度,如果有的话。
【讨论】: