次のNSSet、NSMutableArray、NSFastEnumerationのドキュメントをたどっても、以下のシナリオの満足のいくソースが見つかりません。
ここで 、NSMutableArray
、NSArray
およびNSSet
には、均等に 10000000 個のオブジェクトが含まれています。
for (NSString *strIn in MutableArray) //NSMutableArray
{
// same Implementation
}
NSLog(@"Time for Mutable Array %d Iteration : %f",ObjectCount,[[NSDate date]timeIntervalSinceDate:startDate]);
startDate = [NSDate date];
for (NSString *strIn in array) //NSArray
{
// same Implementation
}
NSLog(@"Time for NSArray %d Iteration : %f",ObjectCount,[[NSDate date]timeIntervalSinceDate:startDate]);
startDate = [NSDate date];
for (NSString *strIn in Set) //NSSet
{
// same Implementation
}
NSLog(@"Time for Set %d Iteration : %f",ObjectCount,[[NSDate date]timeIntervalSinceDate:startDate]);
出力は次のとおりです。
10000000回の繰り返しの時間NSMutableArray
:0.048785
10000000回の繰り返しの時間NSArray
:0.390537
10000000回の繰り返しの時間NSSet
:4.684203
NSSet
なぜとのNSArray
反復時間の間にこれほど大きな差があるのか。
あなたの答えを徹底的にしてください。
編集:上記の反復時間の背後にある実際の原因を見つけました。これは、配列と Set のカウントが等しくないためです。ここに実際の質問を投稿しました。また、同じことをここに投稿することもできますが、このページには文書化されていない性質があり、原因の背後にある理由も逸脱しているようです。繰り返しますが、返信をくれた皆さんに感謝します。