iPhone上最快的反方形根

 河南的小人物 发布于 2023-02-04 17:35

我正在开发一款涉及某些物理计算的iPhone应用程序,每秒进行数千次.我正在努力优化代码以提高帧速率.我正在寻求改进的其中一个方面是反平方根.现在,我正在使用Quake 3快速反平方根方法.然而,在做了一些研究之后,我听说使用NEON指令集有一种更快捷的方法.我不熟悉内联汇编,无法弄清楚如何使用NEON.我尝试实现math-neon库,但是由于大多数基于NEON的函数缺乏,我遇到了编译器错误return.

编辑:我突然得到一些"不明确的问题"关闭投票.虽然我认为它非常明确,而且那些回答明显的人都明白,也许有些人需要明确说明: 你如何使用Neon来执行更快的计算?它是否真的是在iPhone上获得反平方根的最快方法?

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

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

    地震方法(在压力条件下平均FPS略有增加)

    霓虹灯(这是一个非常接近的电话,但似乎Quake稍快一点)

    1/sqrtf()(差异更明显,1-3 FPS下降).

"正式"测试(吞噬我的手机CPU的应用程序.计算每种方法通过1​​0000000随机生成的浮点数组所需的时间)

    霓虹灯(显然是最快的,如果它用于一次做两个sqrts,速度加倍).

    1/sqrtf()(只比霓虹灯慢一点.这个令人惊讶的结果让我认为这个测试"没有结果",直到我进一步调查)

    Quake(令人惊讶的是,这种方法比其他两种方法慢了几个数量级.鉴于它在其他测试中的表现,这尤其令人惊讶.)

虽然在应用程序性能测试中,地震与霓虹灯的距离太近而无法确定,但在第一次测试中,地震vs 1/sqrtf()显然已被切断,第二次测试与输出的值非常一致.但最重要的是应用程序性能,所以我将根据该测试做出最终决定.

1 个回答
  • 该接受的答案了的你链接的问题已经给出了答案,但不拼出来:

    #import <arm_neon.h>
    
    void foo() {
        float32x2_t inverseSqrt = vrsqrte_f32(someFloat);
    }
    

    iOS SDK已经提供了标题和功能.

    2023-02-04 17:37 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有