Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone编译优化:浮点还是定点?_Iphone_Compilation_Floating Point_Arm_Fixed Point - Fatal编程技术网

iPhone编译优化:浮点还是定点?

iPhone编译优化:浮点还是定点?,iphone,compilation,floating-point,arm,fixed-point,Iphone,Compilation,Floating Point,Arm,Fixed Point,我正在为iphone构建一个库(speex,但我相信它也会应用于许多其他lib),make脚本可以选择使用定点而不是浮点 由于iphone ARM处理器具有VFP扩展,并且执行非常好的浮点计算,您认为使用定点选项是更好的选择吗 如果有人已经对此进行了基准测试并希望与大家分享,我将非常感谢他。好吧,这取决于应用程序的设置,这里有一些指导原则 首先尝试将优化设置为0(最快最小) 启用“放松IEEE遵从性” 如果您的应用程序可以轻松地独立处理连续内存位置中的浮点数,那么您应该查看ARM和汇编指令,它们

我正在为iphone构建一个库(speex,但我相信它也会应用于许多其他lib),make脚本可以选择使用定点而不是浮点

由于iphone ARM处理器具有VFP扩展,并且执行非常好的浮点计算,您认为使用定点选项是更好的选择吗


如果有人已经对此进行了基准测试并希望与大家分享,我将非常感谢他。

好吧,这取决于应用程序的设置,这里有一些指导原则

  • 首先尝试将优化设置为0(最快最小)
  • 启用“放松IEEE遵从性”
  • 如果您的应用程序可以轻松地独立处理连续内存位置中的浮点数,那么您应该查看ARM和汇编指令,它们可以在一条指令中处理多达4个浮点数
  • 如果您已经大量使用浮点数学,请尝试将一些逻辑切换到定点(但请记住,从NEON寄存器移动到整数寄存器会导致完全管道暂停)
  • 如果您已经大量使用整数数学,请尝试将一些逻辑更改为浮点数学
  • 记得在优化之前进行概要分析
  • 最重要的是,更好的算法总是会击败上述微观优化
    如果您处理的是大数据块的顺序数据,NEON无疑是一种方法

    浮动还是固定,这是个好问题。NEON处理fixed的速度要快一些,但我会保留本机输入格式,因为转换需要时间,最终需要额外的内存

    即使lib提供不同的输出格式作为选项,它几乎总是意味着lib内部转换。所以我猜在这种情况下,float是本地的。坚持下去

    没有人阻止你微观优化更好的算法。通常,由于现代机器上的流水线,算法越好,通过微观优化可以获得更多的性能增益

    不过我还是会远离内在的。网上有很多帖子抱怨内在论者做了一些疯狂的事情,特别是在处理直接价值观的时候。 它可以而且将会变得非常麻烦,而且你也很难用intrinsic优化任何东西