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](https://clojure.atlassian.net/browse/CLJ-1798)(由 killme2008 报告)
...