【发布时间】:2009-09-09 18:46:08
【问题描述】:
//obj C 版本,有一些 - 18,000 次迭代不到一秒
for (NSString* coordStr in splitPoints) {
char *buf = [coordStr UTF8String];
sscanf(buf, "%f,%f,", &routePoints[i].latitude, &routePoints[i].longitude);
i++;
}
//C 版本 - 18,000 次迭代超过 13 秒
for (i = 0; buf != NULL; buf = strchr(buf,'['), ++i) {
buf += sizeof(char);
sscanf(buf, "%f,%f,", &routePoints[i].latitude, &routePoints[i].longitude);
}
作为一个必然的问题,有没有办法让这个循环更快?
另请参阅此问题:Another Speed Boost Possible?
【问题讨论】:
-
你为什么不转储反汇编并查看原始差异?还是使用分析器?
-
你知道
sizeof(char) == 1适用于所有平台,对吧? -
obj C 版本中的
splitPoints是什么?我的意思是,C 版本正在拆分 buf ......而且,显然,当达到 sn-p 时,obj C 版本已经做到了。
标签: iphone c objective-c cocoa-touch