【问题标题】:What is the fastest int to float conversion on the iPhone?iPhone 上最快的 int 浮点转换是什么?
【发布时间】:2009-09-22 00:10:33
【问题描述】:

我正在将一些 Int16s 和 Int32s 转换为浮动,然后再返回。

我只是使用直接投射,但每秒执行 44100 次(猜猜它的用途是什么?:))

演员阵容有效吗?能不能快一点?

P.S Compile for thumb 已关闭。

【问题讨论】:

  • 为什么需要进行转换?如果您对最终目标进行更多解释,您可能会得到更好的答案。例如,在许多情况下,您可以将它们一直保留为浮点数。
  • 我正在做必须在浮点数上完成的效果处理,并且我已经签署了整数样本。
  • 您的转换/计算必须有多准确?有不少“不符合 IEEE 标准”的浮点库通常性能更好。
  • 从主题标题中删除[未回答],您将重新获得我的支持。

标签: iphone casting floating-point integer


【解决方案1】:

只有两种方法可以知道。

1) 阅读编译器生成的代码,用于在您的情况下将整数提升为浮点数。

2) 衡量编译器生成的代码与其他选项的性能。

要执行前者,请将 SDK 设置为 Device,将 Active Architecture 设置为 arm,然后选择 Build > Show Assembly Code。然后阅读编译器生成的代码。

如果您比编译器更聪明,那么您可以编写自己的汇编代码并使用它。很可能你不是。

如果您多次执行一项操作,Instruments 会很好地向您显示它正在使用多少个处理器样本。但是 Jim 的观点是正确的,您不应该认为它没有帮助而忽略它:在涉及浮点数数学的运算中,编译器类型提升是您最不担心的事情。芯片在两到三个周期内就可以做到这一点,而编译器通常会设法做到这一点。但是您正在进行的效果处理可能需要 数千 个周期。促销活动将在喧嚣中消失。

【讨论】:

    【解决方案2】:

    演员阵容有效吗?在你的情况下,我猜它已经足够高效了。

    可以更快地完成吗?也许……但值得付出努力吗?您是否对其进行了基准测试并发现了由于转换操作导致的性能问题?

    如果您要对浮点样本数据进行数学运算, 如果演员表被证明是一个重大瓶颈,我会感到非常惊讶!

    【讨论】:

    • 与其说它是一个瓶颈,不如说它是一个瓶颈,我只是在性能方面靠墙,并在寻找我能获得的每一次速度提升,所以我仍然想知道如何更快地做到这一点
    • 我已将此答案标记为无用,因为它没有回答问题。这里的论坛促进讨论,​​这个答案没有。无论我的程序是否需要它,如果回答正确,iphone 社区就会使用这个问题,而这样的答案有助于这样的问题得不到回答。
    • 经过反思,您的答案已经足够好,请编辑您的答案并投反对票。
    猜你喜欢
    • 1970-01-01
    • 2015-05-15
    • 2010-09-09
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多