现在我开发一款iPhone应用程序时遇到了麻烦。 我需要计算150个零件并在画布上绘制它。 我有这样的代码:
for (int i=x1; i<=x2; i++) {
for (int j=y1; j<=y2; j++) {
x=[NSNumber numberWithInt:i];
y=[NSNumber numberWithInt:j];
BoxCache *box = [[cache objectForKey:x] objectForKey:y];
if (box) {
ret.count += [box.species count];
}
[x release];
[y release];
}
}
他的执行累了〜5秒(计算阵列15x10),我想问大家,任何减少计算时间的想法或做那些不同的想法。
答案 0 :(得分:1)
您可能需要提供更多信息,因为您的问题相当模糊。根据您发布的内容,我有两条评论:
首先,你问的问题。为什么不使用C数组和整数,而不是(似乎是)字典?它的很多更快。
其次,你正在创建自动释放的NSNumber实例(+ numberWithInt:给你一个自动释放的数字),然后通过调用-release过度释放它们。
需要澄清更好,更具体的答案的事情:
答案 1 :(得分:1)
我不是使用字典词典(这是非常低效的),而是使用常规的旧C数组并自己对内存进行malloc。我可能会将它包装在一个类中,只是为了使内存管理规则更加清晰,但就是这样。