我正在进行iPhone应用程序的调试/优化阶段。我还有一个瓶颈 - 这是程序唯一出现明显延迟的地方,就在以下循环中:(顺便说一句,我已经使用字母和类型重命名了变量。(在实际应用程序中,真实名称更易读,但在上下文之外没有多少意义,所以我希望这足够清楚。)以下是循环:
for(i=0;i<xLong; i+=yFloat*zShort){
aFloat=0.0;
for(int j=i;j<i+yFloat*zShort;j++){
aFloat=hArray[j]/kFloat;
}
bNSNumber = [NSNumber numberWithFloat:aFloat];
[cNSMutableArray addObject:bNSNumber];
}
所有的反对创建和清理都在此循环之外。
(这里的情况应该很简单,但基本上我有一个非常大的数组(数百万个元素),我按照yFloat*zShort长度的块遍历该数组,在该块中添加所有元素,并将最终总和插入另一个数组中。因此,如果hArray长达一百万个元素,而我的块长度为200,我将对前200个元素求和,将该总和插入cNSMutableArray中,并继续移动到hArray中的下一个200个元素。最终,cNSMutableArray将有5000个元素。)
当外部循环约为25k,内部循环约为200时,此代码运行需要约4秒钟。我希望尽可能地减少运行时间,因为在现实世界中,外部循环可能会更大。
有什么想法可以加快速度吗?
感谢您提供的任何想法!