0

約 4000 個のオブジェクトを JSON にシリアライズするのに約 4 秒かかりました (正確には 3820 ミリ秒)。なぜこれほど時間がかかるのかをプロファイリングしているときに、時間の約 40% (1535ms) が

play.classloading.enhancers.PropertiesEnhancer$FieldAccessor.invokeReadProperty(Object, String, String, String)

リフレクションを介して「getter」メソッドを取得するには、約 1152ms かかります。

これに時間がかかる理由と、それを回避または最適化する方法を知っていますか?

4

1 に答える 1

1

リフレクションは安価な操作ではありません。あなたが言及した方法はさらに悪化します.最初にリフレクションを介してメソッドを取得しようとし、例外をキャッチしてからフィールドを取得しようとします. また、メソッドは結果をキャッシュしようとしません。これが非常に頻繁に呼び出される場合、多くの CPU 時間を消費していることは驚くことではありません。

ライブラリを変更せずにこれを回避できるかどうかはわかりません。私が持っている唯一のコンテキストは、あなたからの単一のメソッド参照です。それでは十分じゃない。

于 2013-09-05T14:19:37.897 に答える