我有无效*缓冲... 我需要在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不需要重新分配内存......
答案 0 :(得分:1)
如果你只想用相同长度的NSMutableData *data
的新数据替换(已经初始化的)buffer
对象的内容,那么最快的方法可能是
void *mutableBytes = [data mutableBytes];
memcpy(mutableBytes, buffer, length);
因为没有进行范围检查和没有(重新)分配。另请参阅Working With Mutable Binary Data中的示例。
但是,当然,正如在本论坛中经常说的那样,您应该使用Instruments对您的应用进行分析,以找出优化程序的位置。