0

将大约 4000 个对象序列化为 JSON 大约需要 4 秒(准确地说是 3820 毫秒)。在分析为什么这需要这么长时间时,我发现大约 40% 的时间(1535 毫秒)都花在了

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

而通过反射得到“getter”方法大约需要1152ms。

您知道为什么这需要这么长时间以及如何解决或优化它吗?

4

1 回答 1

1

反射不是一种廉价的操作。您提到的方法使情况变得更糟:首先尝试通过反射获取方法,然后可能捕获异常并尝试获取字段。并且该方法不做任何缓存结果的尝试。如果经常调用它,那么它会占用大量 CPU 时间也就不足为奇了。

我不知道是否可以在不更改库的情况下解决此问题。我唯一的上下文是您提供的单一方法参考。这还不够。

于 2013-09-05T14:19:37.897 回答