2

void* バッファがあります... NSData 構造体 (NSData または NSMutableData) にできるだけ早くカプセル化する必要があります

私は、(クラスで定義された)NSMutableDataを1つだけ使用していると推測しています

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

あるいは

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

[NSData dataWithData:] すべての関数呼び出しを使用するよりもはるかに高速になります...

これは音声処理用なので、できるだけ高速にする必要があります。

NSData コンストラクターの代わりに NSMutableData を使用する方が高速であることを誰かが確認できますか?

編集 :

バッファは常に同じサイズであり、NSMutableData はメモリを再割り当てする必要はありません...

4

1 に答える 1

1

(すでに初期化された)オブジェクトの内容を同じ長さのNSMutableData *data新しいデータに置き換えるだけの場合、おそらく最速の方法はbuffer

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

範囲チェックも (再) 割り当ても行われないためです。Working With Mutable Binary Dataの例も参照してください。

しかし、もちろん、このフォーラムでよく言われるように、Instruments でアプリをプロファイリングして、プログラムを最適化する場所を見つける必要があります。

于 2012-09-23T19:17:34.810 に答える