Cocoa のベテランの皆さんにお聞きしたいのですが、次のような場合に可変オブジェクトと不変オブジェクトの使用でパフォーマンスに違いはありますか?
NSString
stringByAppendingString:
対NSMutableString
の_appendString:
NSArray
arrayByAddingObject:
対NSMutableArray
の_addObject:
- ...
ありがとう、幸せなコーディング!
Cocoa のベテランの皆さんにお聞きしたいのですが、次のような場合に可変オブジェクトと不変オブジェクトの使用でパフォーマンスに違いはありますか?
NSString
stringByAppendingString:
対NSMutableString
の_appendString:
NSArray
arrayByAddingObject:
対NSMutableArray
の_addObject:
ありがとう、幸せなコーディング!
この質問に答えるのは難しいです: NSArray
andNSString
は実際の実装ではなく、クラスクラスターであり、NSMutableArray
andNSMutableString
です。その下にある真の実装を特定できないため、パフォーマンスを比較するのは困難です。それに対する明確な答えはおそらく見つからないでしょう。
しかし、私が推測するのは、変更を含む新しいオブジェクトを作成するstringByAppendingString
ことです。つまり、現在のアイテムをメモリ内の新しい場所にコピーし、可能な場合はコピーを防ぐように構築されているため、パフォーマンスが向上するはずです (メモリを再コピーする可能性があるため、実際には正しくありません)要素が追加されたときですが、毎回ではありません)。arrayByAddingObject
NSMutableArray
NSMutableString
NSMutableArray
これについては、CoreFoundation のコーダーを信頼するべきだと思います。オブジェクトを変更したくありませんか? 変更可能なものを使用してください。