我们正在使用 clojure.data.json,并使用 jprofiler 对项目进行了性能分析,结果显示 LockingTransaction 存在一个热点,性能分析期间创建了太多的 RetryEx 实例。
RetryEx 实例变量应作为类变量静态使用,以避免在开始新的 STM 事务时创建。
!profile.png!
附件是性能分析结果屏幕截图和将 RetryEx 设置为静态的补丁。
我现在没有做任何基准测试,但可能一个 clojure.data.json 性能基准测试将会证明补丁效果更好。