gpt4 book ai didi

ios - 如何在 iOS 中优化此公式

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:01:05 26 4
gpt4 key购买 nike

我的应用程序中有一行代码被我确定为瓶颈:

Byte rSource, rSource1, rSource2, rSource3, rSource4;
Float32 mult1, mult2, mult3, mult4;

// this gets called many many times inside a loop:
rSource = (int)(rSource1 * mult1 + rSource2 * mult2 + rSource3 * mult3
+ rSource4 * mult4);

有什么方法可以加快这个调用的时间吗?我看过一些关于内联汇编代码的帖子,我猜这可能是一种更快地执行此操作的方法,但我不知道如何使用内联汇编或我需要什么确切的汇编指令才能执行此计算.

有趣的是,如果我将行更改为:

rSource = (Byte)(rSource1 * mult1 + rSource2 * mult2 + rSource3 * mult3 
+ rSource4 * mult4);

计算时间几乎是原来的两倍(我猜这是因为编译器添加了检查以确保被转换为 Byte 的值实际上在 0 到 255 之间,而 int cast 它不做任何检查)。

我可以在我的代码中添加一个 asm 方法,这样它会做饱和或其他事情(在线代码,只是一个例子):

int a, y;
__asm__("usat %0, #8, %1\n\t" : "=r"(y) : "r"(a));

我该如何编写这样的代码来处理我上面的方法?

最佳答案

如果这行代码是您的瓶颈,那么它肯定处于内部循环中。我必须假设 Rsource 值或 mult 值在循环期间被更改(查看循环会有所帮助)。

(旁注:变量应始终以小写字母开头;Rsource 看起来像类型名称。)

假设这是在某个 for 循环中,您几乎肯定想用 Accelerate framework 替换它.我们必须查看更多算法才能知道您真正实现的功能是什么,但 Accelerate 框架专为组合大型数字表而设计。

关于ios - 如何在 iOS 中优化此公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30399787/

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