c# - c#中最快的fabsf(浮点绝对值函数)实现是什么?
问题描述
我正在优化 Unity 3d 游戏中最苛刻的功能。最昂贵的子例程是统一的 Mathf.Abs 方法,它在浮点值上调用(从不加倍)。在某些情况下,调用此函数会使帧渲染延迟增加数毫秒。代码库是保密的,所以你必须相信 Abs 调用是算法的核心。
在深入分析时,我发现了 mathf。Abs 只是一个包装器,它调用用于双打的更快的 system.math.abs。看来,如果我可以完全避免包装器并简单地调用为 float32 设计的 system.Math.Abs 的等价物,我将免费获得显着的加速。
有人可以向我解释为什么很难找到一个吗?我在 NuGet 上测试的浮点库也将结果从双版本转换。
我研究了使用 aa float_long union 结构和屏蔽操作的 GNU 实现。有人可以引导我朝着正确的方向在我自己的命名空间中实现这一点,或者找到一个可以帮助我的方法吗?
解决方案
推荐阅读
- arrays - 在 Dataweave 2.0 中,如何根据 HTTP 查询参数构造第二个数组元素来搜索一个数组
- xcode - 当导航链接到第三个视图嵌入在导航栏按钮中时,SwiftUI 导航无法按预期使用 3 个视图
- javascript - 在 OpenLayers 中初始化后更改视图的最大范围
- javascript - Puppeteer 处理嵌套的 iframe
- postgresql - Postgress 中 Schema 的用户权限被拒绝
- google-apps-script - 谷歌表单依赖下拉列表,使用谷歌应用脚本
- kubernetes - 在 K8s 中对 Pod 进行请求和限制值的最佳实践是什么?
- sql-server - 使用 SQL 中的 Group 从表中获取最近的第 n 组数据
- c# - 实体框架填充 ObservableCollection 或 ReadonlyCollection
- c++ - 为什么 C++ 中整数的默认初始化值为 4200187?