1

我正在优化 Unity 3d 游戏中最苛刻的功能。最昂贵的子例程是统一的 Mathf.Abs 方法,它在浮点值上调用(从不加倍)。在某些情况下,调用此函数会使帧渲染延迟增加数毫秒。代码库是保密的,所以你必须相信 Abs 调用是算法的核心。

在深入分析时,我发现了 mathf。Abs 只是一个包装器,它调用用于双打的更快的 system.math.abs。看来,如果我可以完全避免包装器并简单地调用为 float32 设计的 system.Math.Abs​​ 的等价物,我将免费获得显着的加速。

有人可以向我解释为什么很难找到一个吗?我在 NuGet 上测试的浮点库也将结果从双版本转换。

我研究了使用 aa float_long union 结构和屏蔽操作的 GNU 实现。有人可以引导我朝着正确的方向在我自己的命名空间中实现这一点,或者找到一个可以帮助我的方法吗?

4

0 回答 0