加速具有大量迭代的For循环?目标C.

时间:2011-12-16 18:15:42

标签: iphone objective-c xcode memory-management for-loop

我的Open GL ES应用程序中有以下简单的For循环:

for (NSValue * value in pointerStorageArray) 
{
    NSLog(@"Freeing Malloced Data");

    free(value);
}

问题是pointerStorageArray包含大约40000个数据项(3D对象的所有数据),因此循环大约需要一分钟才能完成。

有什么方法可以加快循环完成所需的时间吗?

修改

这个问题现在说明了连续18个小时不编码的重要性。删除NSLog语句可将其从5分钟加速到4秒;)

1 个答案:

答案 0 :(得分:2)

如果减速实际上是由重复调用free()引起的,那么您可以考虑分配一些较大的连续内存块,而不是40000个单独的内存块。

与往常一样,您应该找到一种方法来分析您的代码,以确定瓶颈的确切位置。