有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java评测显示PropertiesEnhancer中执行时间长

将大约4000个对象序列化为JSON大约需要4秒钟(确切地说是3820ms)。在分析为什么这需要这么长时间的时候,我意识到大约40%的时间(1535毫秒)花在工作上

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

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

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


共 (1) 个答案

  1. # 1 楼答案

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

    我不知道是否有可能在不改变库的情况下解决这个问题。我仅有的上下文是您提供的单个方法引用。这还不够