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发表

我发现它还在writer中使用了很多dosync,如下:

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

看起来是在使用dosync来更改某些可变状态,也许它们可以被重写为其他形式,例如atom、java object/lock等。
但这又是另一回事了。

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