Как заставить NSMutableData
зарезервировать непрерывную память в том же разделе? У меня есть справедливое количество данных, поступающих по частям, и производительность не является удовлетворительной. Общий размер моих данных будет постоянным.Сохранять непрерывное пространство в памяти с помощью NSMutableData
ответ
NSMutableData
должен хранить все данные в соприкосновении. Внутри он использует «эластичный» буфер, измененный с помощью realloc. Вы можете создать с помощью [NSMutableData dataWithLength:];
Почему бы не использовать NSData
, если его размер постоянный?
Также почему вы беспокоитесь о производительности NSMutableData
. У профиля инструмента была проблема с производительностью?
Привет, @ Justin, Хорошо. Я объясню немного больше, размер буфера постоянный, но я пишу об этом по частям, данные поступают из внешнего аксессуара, поэтому каждый раз, когда я получаю данные, мне нужно скопировать его в исходное положение. Я беспокоюсь о производительности, так как я получаю 64 Кбайт информации от аксессуара, и он занимает 3+ секунды (для меня это много), поэтому я пытаюсь оптимизировать код. –
@JoseAlbertoDiaz записывает данные с помощью memcpy ([data mutableBytes] + смещение, источник, размер); или, может быть, больше какао-friendly replaceBytesInRange: withBytes: –
Создайте объект 'NSMutableData' с помощью' dataWithCapacity: 'или' initWithCapacity: '. – rmaddy
Спасибо @rmaddy, я буду использовать initWithCapacity. –