什么是最长的一个长的转换为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; 

如果您的意思是运行时间最快,唯一可以肯定的就是双向尝试并看看。 简介。 不要揣测。