Edit Diff Annotate History
Upload
List
Recent
Alias
Top
Help
EOKVCPerformance : Edit
Last updated: Fri Mar 30 22:07:46 +0900 2007
!KeyValueCodingのパフォーマンス KVCは便利ではありますが、パフォーマンス上の理由から必要なときにだけ使うべきとされています(リンク先の文書はCocoaのKVCに関するものですが、WOでも同じことでしょう)。 http://homepage.mac.com/mkino2/panther/KeyValueCoding/Performance.html というわけで、検索順序とアクセス方法でそれぞれ100万回の呼び出しをした結果を比較してみます。 http://www.spice-of-life.net/webobjects/eof/kvc/KVCTest.java !検索順序での比較 キーのアクセサメソッド・インスタンス変数の検索順序ごとの比較です。 かっこがつかないのはインスタンス変数への直接アクセスです。 ||検索順序||時間(10ミリ秒)|| ||getA()||1172|| ||B()||1109|| ||isC()||1131|| ||_getD()||1150|| ||_E()||1112|| ||_F()||1112|| ||_G||1346|| ||_isH||1336|| ||I||1348|| ||isJ||1340|| メソッド名や変数名で大きく速度が変わることはないようですが、アクセサメソッドを使うほうがインスタンス変数に直接アクセスするより高速です。 !!アクセス方法での比較 次に、KVCを使う場合と使わない場合で比較します。 ||アクセス方法||時間(10ミリ秒)|| ||インスタンス変数||14|| ||アクセサメソッド||16|| ||KVC (getA())||1147|| 検索を行うので遅くなるのは当然ですが、インスタンス変数やアクセサメソッドを使うよりもはるかに遅いようです。