我的Open GL ES应用程序中有以下简单的For循环:
for (NSValue * value in pointerStorageArray)
{
NSLog(@"Freeing Malloced Data");
free(value);
}
问题是pointerStorageArray包含大约40000个数据项(3D对象的所有数据),因此循环大约需要一分钟才能完成。
有什么方法可以加快循环完成所需的时间吗?
修改
这个问题现在说明了连续18个小时不编码的重要性。删除NSLog语句可将其从5分钟加速到4秒;)
答案 0 :(得分:2)
如果减速实际上是由重复调用free()
引起的,那么您可以考虑分配一些较大的连续内存块,而不是40000个单独的内存块。
与往常一样,您应该找到一种方法来分析您的代码,以确定瓶颈的确切位置。