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