首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone 4和iPad 2:定点运算相对于浮点运算的优势

问iPhone 4和iPad 2:定点运算相对于浮点运算的优势
EN

Stack Overflow用户
提问于 2011-04-01 11:49:54
回答 2查看 1.7K关注 0票数 1

我听说iPhone 4和iPad有一个叫做VFP的浮点运算单元,它在某种程度上优化了浮点运算,甚至允许使用单指令多路复用(尽管GCC是否利用了这一点还是个疑问)。然而,我读到对于一些Android设备,使用定点而不是浮点的加速可以导致性能提高20倍。

在这些设备中使用定点运算而不是浮点来实现浮点密集型代码有什么好处?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-01 13:57:41

iPhone 3G armv6中央处理器有一个VFP流水线浮点单元,与在整数中进行相同的计算相比,具有更高的吞吐量。GCC不支持生成计划用于流水线的VFP指令。iPhone 3GS和iPhone 4 armv7 CPU没有流水线VFP单元,因此在某些浮点序列上实际上比iPhone 3G稍慢;但armv7处理器在可向量化的短浮点上更快,因为它具有霓虹灯并行矢量单元。一些Android设备CPU根本没有任何硬件浮点单元,因此操作系统使用FP的软件仿真,它可能比整数或定点慢一个数量级。

一般的经验法则可能是,如果您的算法只能处理24位的尾数精度,并且不需要在浮点和整数之间进行大量转换,那么在iOS上使用短浮点。它几乎总是更快。

但是如果你想用你的C代码支持老的Android设备(使用NDK),使用缩放整数。

如果你的应用程序没有做大量的数字运算,对于一个典型的0.1%以下的应用程序来说,上面的这些都不会有明显的区别。

票数 6
EN

Stack Overflow用户

发布于 2011-04-02 12:16:40

正如hotpaw2所说,iPhone 4和iPad 2都有硬件浮点,所以你不会看到在缺乏此类硬件的平台上获得的数量级加速。

也就是说,霓虹灯向量单元确实支持整数运算和浮点运算,并且可以通过将某些运算转换为定点问题来加速它们。然而,,除非你真正了解自己在做什么,并且准备好编写关键例程的汇编实现,否则你将看不到任何好处。

如果浮点数适合你的问题,就坚持使用它。如果您需要提高性能,我保证跟踪应用程序的执行将带来许多更好的调优机会。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5508933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档