我在仪器中运行时间分析器。我尽可能简化了代码,将所有事情都归结为一个确切的问题。循环内有一行代码checkInString = [_ formatter stringFromDate:[checkInArrayCopy objectAtIndex:i]];正在占用90%的处理时间。关于如何优化此代码的任何想法?优化此循环
NSDateFormatter *format = [[NSDateFormatter alloc]init];
[format setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[format setDateFormat:@"MM/dd/YYYY"];
NSString *checkInString;
for (int x=0; x<100; x++) {
for (int i=0; i<checkInArray.count; i++) { //CheckInArray is a NSMutableArray of NSDates, with about 100 objects inside
checkInString =[_formatter stringFromDate:[checkInArray objectAtIndex:i]]; //**90% of processing time
}
}
虽然您可能无法优化日期格式化程序(如果有的话),但是如果使用'NSSet'中的不同日期集合来减少循环次数,您可能会稍微减轻一些循环次数,具体取决于是否不是你正在使用分钟/秒/毫秒。所以,如果你能够将这些日期压缩到一半,那么你就需要更少的时间格式化。 – Jeremy 2013-02-08 18:32:35
我想你可能可以使用GCD创建一个多线程版本的代码 - 代码似乎非常适合多线程。这可以提高某些平台的性能。 – 2013-02-08 19:19:00
假设这些内容已排序,并且您重复使用同一日期,缓存最近格式化的日期可能会加速很多事情。 – escrafford 2013-02-08 19:24:13