EOKVCPerformance

2007/03/30 (Fri) 22:07:46 JST

?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
_G1346
_isH1336
I1348
isJ1340

メソッド名や変数名で大きく速度が変わることはないようですが、アクセサメソッドを使うほうがインスタンス変数に直接アクセスするより高速です。

アクセス方法での比較

次に、KVCを使う場合と使わない場合で比較します。

アクセス方法時間(10ミリ秒)
インスタンス変数14
アクセサメソッド16
KVC (getA())1147

検索を行うので遅くなるのは当然ですが、インスタンス変数やアクセサメソッドを使うよりもはるかに遅いようです。


Inverse Pages: WebObjects基礎研究室