gpt4 book ai didi

ios - Accelerate Framework 能否基于单独的索引数组聚合数组值?

转载 作者:行者123 更新时间:2023-11-29 12:33:00 26 4
gpt4 key购买 nike

我正在尝试确定 Accelerate Framework 是否可以帮助加快我的应用程序必须执行的计算。假设我有以下数组:

  • invoice[0..n],包含发票值的 double 组

  • week[0..n],一个整数数组,其中 week[x] 包含一年中的第几周 invoice[ x] 已计费。

每周的发票数量是可变的。我有几万张发票。两个数组都按周排序。

Accelerate 框架有什么方法可以帮助我计算每周收费多少?

因此,例如,如果:

invoice = [10.0, 15.0, 10.0, 25.0, 40.0,   x, ...]
week = [ 0, 0, 0, 1, 1, 2, ...]

结果应该是:[35.0, 65.0, ...]

我浏览了文档,它似乎没有这个功能,但由于我是全新的,所以我可能缺少一些技巧。

最佳答案

你试过类似的东西吗:

Float32 invoices[6] = {10.0, 15.0, 10.0, 25.0, 40.0, 80.0};
UInt8 weeks[6] = {0, 0, 0, 1, 1, 2};
Float32 *weeklyInvoicesAmount = calloc(52,sizeof(Float32));

int weekCounter = 0;
int invoiceCounter = 0;
int weeklyInvoice = 0;


while (weekCounter < 52)
{
weeklyInvoice = 0;

while (weeks[invoiceCounter] == weekCounter)
weeklyInvoice += invoices [invoiceCounter++];

weeklyInvoicesAmount[weekCounter] = weeklyInvoice;
printf("Week :%i invoice: %f\n", weekCounter, weeklyInvoicesAmount[weekCounter]);
++weekCounter;
}

free(weeklyInvoicesAmount);

现在显然,您需要在阵列设置上做一些工作。

我问你是否尝试过 C 逻辑的原因是因为我通常发现逻辑 C + 编译器优化通常比单独使用 C 提供更好的结果 - 因为这是编译器无论如何在后台做的......并且可能优化比我们更好....

编译器优化:项目 -> build设置 -> 优化级别 -> 将 Debug 和 release 更改为“-Os”。

我会从那开始,并使用不同的优化来测量不同的马赫时间。

如果仍然很慢,我会在 Accelerate 框架中尝试 vDSP:

Accelerate Framework API

我认为您在任何矩阵计算中都会遇到的问题是您的步幅可变,因此您不能使用 vDSP_sve 之类的东西。

Accelerate 框架和矢量数学优化基于能够使用静态数量的元素来填充寄存器并同时进行计算。可变步幅否定了这一点。

希望其中一些有所帮助。

关于ios - Accelerate Framework 能否基于单独的索引数组聚合数组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27139539/

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