2024 年 Clojure 状态调查!中分享您的想法。

欢迎!请参阅关于页面了解更多关于如何使用本网站的信息。

0投票
Clojure

我们正在使用 clojure.data.json,并使用 jprofiler 对我们的项目进行了基准测试,它显示在 LockingTransaction 中有一个热点。在分析期间创建了太多的 RetryEx 实例。
RetryEx 实例变量应该作为一个类变量静态,以避免在开始新的 STM 事务时创建。

!profile.png!

附件是分析结果屏幕截图和对 RetryEx 更改为静态的补丁。
我现在没有进行任何基准测试,但也许对 clojure.data.json 的性能进行基准测试将证明补丁效果更好。

3 个答案

0投票

评论者:alexmiller

我认为这里提出建议是合理的,但我很难相信它会带来太大的变化。我真正的问题是为什么 pprint 使用 dosync。

0投票

评论者:killme2008

我发现它像下面这样在写入器中使用了多个 dosync

https://github.com/clojure/clojure/blob/master/src/clj/clojure/pprint/pretty_writer.clj

似乎 dosync 用来改变一些可变状态。也许可以将其重写为其他形式,如 atom、java 对象/锁等。
但这是另一个故事。

0投票
参考:https://clojure.atlassian.net/browse/CLJ-1798(由killme2008报告)
...