gpt4 book ai didi

ios - iPhone 上最快的反平方根

转载 作者:可可西里 更新时间:2023-11-01 04:30:09 26 4
gpt4 key购买 nike

我正在开发一个 iPhone 应用程序,该应用程序涉及某些每秒完成数千次的物理计算。我正在努力优化代码以提高帧率。我正在考虑改进的部分之一是平方根倒数。现在,我正在使用 Quake 3 fast inverse square root方法。然而,在做了一些研究之后,我听说 there is a faster way by using the NEON指令系统。我不熟悉内联汇编,不知道如何使用 NEON。我尝试实现 math-neon库,但我收到编译器错误,因为大多数基于 NEON 的函数都缺少 return

编辑:我突然得到了一些“不明确的问题”的投票。虽然我觉得说的很清楚,回答的人也很明白,但也许有些人需要明确说明:您如何使用 Neon 来执行更快的计算?它真的是在 iPhone 上获得平方根倒数的最快方法吗?

编辑:我今天对 Neon VS Quake 做了一些更正式的测试,但如果有的话,我现在对结果更加不确定:

  • 应用内测试:(当前在应用商店中的应用修改了其 invsqrt 方法)

    1. Quake 方法(在压力条件下平均 FPS 略有增加)
    2. Neon(这是一个非常接近的电话,但似乎 Quake 稍微快一点)
    3. 1/sqrtf()(更明显的差异,1-3 FPS 下降)。
  • “正式”测试(一个占用我手机 CPU 的应用程序。计算每种方法通过 10000000 个随机生成的 float 数组所需的时间)

    1. Neon(显然是最快的,如果用于同时执行两个 sqrts,速度会加倍)。
    2. 1/sqrtf()(只比 Neon 慢一点。这个令人惊讶的结果让我认为这个测试“不确定”,直到我进一步调查)
    3. Quake(令人惊讶的是,这种方法比其他两种方法慢了几个数量级。考虑到它在其他测试中的表现,这尤其令人惊讶。)

虽然在应用程序性能测试中 quake vs neon 太接近了,无法确定什么,但在第一次测试中 quake vs 1/sqrtf() 很明显被删掉了,第二次测试与它的值非常一致输出。不过,最终重要的是应用性能,因此我将根据该测试做出最终决定。

最佳答案

accepted answerquestion you've linked已经提供了答案,但没有把它拼出来:

#import <arm_neon.h>

void foo() {
float32x2_t inverseSqrt = vrsqrte_f32(someFloat);
}

header 和函数已由 iOS SDK 提供。

关于ios - iPhone 上最快的反平方根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21038641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com