java - 分析显示 PropertiesEnhancer 中的执行时间较长

标签 java playframework

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

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

通过反射获取“getter”方法大约需要1152ms。

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

最佳答案

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

我不知道是否可以在不更改库的情况下解决这个问题。我所拥有的唯一上下文是您提供的单一方法引用。这还不够。

关于java - 分析显示 PropertiesEnhancer 中的执行时间较长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18629246/

相关文章:

java - 使用 CascadeType.ALL 时,JPA 将同一对象保留两次

java - Sonar 显示旧代码中存在新的违规行为

javascript - 在 Play 框架中允许 javascript 调试器(忘记了调试器语句)

playframework - 如何在 JPQL 中执行复杂的 LEFT JOIN 条件?

playframework - 如何在Play Framework的配置文件中使用 "war.context"?

scala - 当我将 Play 项目拆分为子模块时,我在哪里放置测试

java - 查找图像的平均颜色

java - 尝试使用 Hashmap<Integer, Integer>

java - 将输出数据写入文本文件会在文本文件中给出不完整的结果

playframework - Play 框架 2.3 dist 任务 - javascripts-min 不可用