2013-07-11 37 views
0

如何強制NSMutableData在同一節中保留連續內存?我有大量的數據逐一到達,性能不理想。我的數據總大小將保持不變。使用NSMutableData保留內存中的連續空間

+1

用'dataWithCapacity:'或'initWithCapacity:'創建'NSMutableData'對象。 – rmaddy

+0

謝謝@rmaddy,我將使用initWithCapacity。 –

回答

2

NSMutableData應該連續存儲所有數據。它在內部使用了一個帶有realloc大小的「有彈性」緩衝區。您可以使用[NSMutableData dataWithLength:];

創建如果大小恆定,爲什麼不使用NSData

此外,爲什麼你擔心NSMutableData的表現。樂器配置文件是否顯示性能問題?

+0

嗨@Justin,好吧我會再多解釋一下,緩衝區大小是恆定的,但我通過部分寫入,數據來自外部附件,因此每次接收數據時都需要將其複製到適當的位置。我很擔心性能,因爲我從附件收到64KB的信息,它需要3秒以上(對我來說,這是很多),所以我試圖優化代碼。 –

+0

@JoseAlbertoDiaz使用memcpy([data mutableBytes] + offset,source,size)寫入數據;或者可能更友好replaceBytesInRange:withBytes: –