我们正在使用 clojure.data.json,并使用 jprofiler 对我们的项目进行性能分析,它显示在 LockingTransaction 中存在热点区域。性能分析过程中创建了过多的 RetryEx 实例。
retryex 实例变量应该是作为类变量静态的,以避免在新的 STM 事务开始时创建它们。
!profile.png!
附件包括性能分析结果屏幕截图以及使 retryex 成为静态的补丁。
我现在没有做任何基准测试,但也许 clojure.data.json 的性能基准测试会验证补丁的效果更好。