IOS NSData构造函数VS NSMutableData用于实时使用目的

时间:2012-09-23 16:37:24

标签: ios nsdata nsmutabledata

我有无效*缓冲... 我需要在NSData结构(NSData或NSMutableData)

中尽可能快地封装它

我猜测只使用一个NSMutableData(在类中定义)和

- (void)resetBytesInRange:(NSRange)range
- (void)appendBytes:(const void *)bytes length:(NSUInteger)length

甚至

- (void)replaceBytesInRange:(NSRange)range withBytes:(const void *)bytes

比使用[NSData dataWithData:]每个函数调用快得多......

这适用于音频处理,所以它需要是最快的。

有没有人可以确认我使用NSMutableData而不是NSData构造函数会更快?

编辑:

缓冲区总是大小相同,NSMutableData不需要重新分配内存......

1 个答案:

答案 0 :(得分:1)

如果你只想用相同长度的NSMutableData *data的新数据替换(已经初始化的)buffer对象的内容,那么最快的方法可能是

void *mutableBytes = [data mutableBytes];
memcpy(mutableBytes, buffer, length);

因为没有进行范围检查和没有(重新)分配。另请参阅Working With Mutable Binary Data中的示例。

但是,当然,正如在本论坛中经常说的那样,您应该使用Instruments对您的应用进行分析,以找出优化程序的位置。