8

整数カウンターを使用して要素をループするNSFastEnumerationよりも (実行時のパフォーマンスのように) 本当に速いか、(配列の場合) 使用するかを知っている人はいますか?NSEnumerator

それが実際に速い場合、どのようにしてその速度を達成するのでしょうか?

それとも、「高速」とは、実際には反復コードの記述が高速であることを指しているのでしょうか?

前もって感謝します。

4

2 に答える 2

6

コンテナにもよりますが、メソッド呼び出しが少ないためNSFastEnumeration、少なくとも とNSEnumerator同じくらい高速ですが、通常ははるかに高速です。

nextObject配列内のすべての項目を呼び出す代わりに、配列NSFastEnumeratorを使用すると、C 配列内のオブジェクトのブロックを一度に返すことができます。その C 配列を反復すること、それぞれが 1 つのオブジェクトだけを検索して返す多くのメソッド呼び出しを行うよりもはるかに高速です。

于 2011-12-09T08:45:52.333 に答える
5

Fast enumeration「for」ループよりも高速ではありません。基本的なループはすでに可能な限り最適化されているため、一般的な意味でそれは不可能です。

代わりに、fast enumerationObjective-C メソッド呼び出しを使用して、Objective-C オブジェクトから反復ごとにデータを取得する "for" または "while" ループよりも高速です。

これは、バッチでデータをフェッチすることで行われ、反復ごとにメソッドを呼び出すオーバーヘッドが削減されます。ループの内部からメソッド呼び出しを削除すると、コンパイラの最適化にも利点があります。

于 2011-12-09T08:47:47.080 に答える