整数カウンターを使用して要素をループするNSFastEnumeration
よりも (実行時のパフォーマンスのように) 本当に速いか、(配列の場合) 使用するかを知っている人はいますか?NSEnumerator
それが実際に速い場合、どのようにしてその速度を達成するのでしょうか?
それとも、「高速」とは、実際には反復コードの記述が高速であることを指しているのでしょうか?
前もって感謝します。
整数カウンターを使用して要素をループするNSFastEnumeration
よりも (実行時のパフォーマンスのように) 本当に速いか、(配列の場合) 使用するかを知っている人はいますか?NSEnumerator
それが実際に速い場合、どのようにしてその速度を達成するのでしょうか?
それとも、「高速」とは、実際には反復コードの記述が高速であることを指しているのでしょうか?
前もって感謝します。
コンテナにもよりますが、メソッド呼び出しが少ないためNSFastEnumeration
、少なくとも とNSEnumerator
同じくらい高速ですが、通常ははるかに高速です。
nextObject
配列内のすべての項目を呼び出す代わりに、配列NSFastEnumerator
を使用すると、C 配列内のオブジェクトのブロックを一度に返すことができます。その C 配列を反復することは、それぞれが 1 つのオブジェクトだけを検索して返す多くのメソッド呼び出しを行うよりもはるかに高速です。
Fast enumeration
「for」ループよりも高速ではありません。基本的なループはすでに可能な限り最適化されているため、一般的な意味でそれは不可能です。
代わりに、fast enumeration
Objective-C メソッド呼び出しを使用して、Objective-C オブジェクトから反復ごとにデータを取得する "for" または "while" ループよりも高速です。
これは、バッチでデータをフェッチすることで行われ、反復ごとにメソッドを呼び出すオーバーヘッドが削減されます。ループの内部からメソッド呼び出しを削除すると、コンパイラの最適化にも利点があります。