什么是最长的一个长的转换为NSString的方法
我需要将很多很长的转换成NSString。 什么是最快的方法来做到这一点? 我知道有两种方法可以做到这一点,我想知道是否还有其他的东西会更快。
NSString* str = [NSString stringWithFormat:@"%lld", val];
和
NSString* str = [[NSNumber numberWithLongLong:val] stringValue];
val是很长的(64位int)。 第一种方法有parsingstring的小开销,第二种方法具有分配额外对象的开销。 最有可能的NSNumber使用NSString的stringWithFormat,但我不知道。
有没有人知道这个更快的方法?
我把一个基本的分析应用程序放在一起。 我尝试了你的两种方法,Rob Mayoff的两种方法。
stringWithFormat:
平均需要0.000008秒。 其他三种方法(在numberWithLongLong:
上调用stringValue
)和Rob的两个方法平均花费了0.000011秒。
这是我的代码。 这显然不是100%准确的,因为configuration文件中包含一些其他的操作,但是在所有的testing中差异是相同的:
- (void) startProfiling { self.startDate = [NSDate date]; } - (NSTimeInterval) endProfiling { NSDate *endDate = [NSDate date]; NSTimeInterval time = [endDate timeIntervalSinceDate:self.startDate]; self.startDate = nil; NSLog(@"seconds: %f", time); return time; } - (void)doTest:(id)sender { long long val = 1234567890987654321; NSTimeInterval totalTime = 0; for (int i = 0; i < 1000; i++) { [self startProfiling]; // change this line for each test NSString* str = [NSString stringWithFormat:@"%lld", val]; totalTime += [self endProfiling]; } NSLog(@"average time: %f", totalTime / 1000); }
这是最快的types:
NSString *string = @(val).description;
这需要一个额外的按键:
NSString *string = @(val).stringValue;
如果您的意思是运行时间最快,唯一可以肯定的就是双向尝试并看看。 简介。 不要揣测。