【问题标题】:Profiling tool for Clojure?Clojure 的分析工具?
【发布时间】:2011-02-27 19:54:39
【问题描述】:

有人知道 Clojure 有什么好的分析工具或库吗?

我更喜欢可以从 REPL 中使用的东西,就像当年 Allegro Common Lisp 中的 (with-profiling ...) 一样。

有什么类似的吗?

或者您是否有任何与 Clojure 配合良好的(非商业)Java 分析器的经验?

【问题讨论】:

    标签: clojure profiling


    【解决方案1】:

    我发现 VisualVM(参见 herehere)非常方便。大约一年前,this blog post 已经描述了它与 Clojure 的使用;据我所知,它并没有过时。

    请注意,启动 VisualVM 分析器的 GUI 有一个突出的文本区域,人们可以在其中输入要从分析中排除的类/包——我发现当clojure.* 在该列表中时,结果会更有用。

    【讨论】:

    • 感谢您的指点。监视器部分 - 堆内存和 CPU 使用情况 - 很方便。但是我正在努力从 CPU 分析器中获得任何有用的东西。分析 Project Euler 问题的解决方案,我的代码中的最大贡献者是几分钟运行时间中的 300 毫秒......有什么东西可以提供方法“总时间”(花费在调用堆栈上的时间)而不是“自我时间”(时间花费在调用堆栈之上)?
    • 实际上有一个 SO 问题,stackoverflow.com/questions/1892038/… - 对分析结果进行快照并进行分析的建议很好,它为您提供了一个很好的“调用树”视图和总方法包括时间。要记住的另一件事是,这是单段命名空间可能成为问题的一个地方(AFAICT 是我在最近与许可人一起在#clojure 中进行的分析会话中某些功能“不可见”的原因),尽管我不会保证他们会在您的特定情况下破坏事情。 ;-)
    • 我会接受你的回答 :) 不是我想要的,但它似乎是最接近的。谢谢。
    • 这里是如何使用 VisualVM 获取您要查找的数据的截屏视频:rhnh.net/2011/08/03/profiling-clojure
    【解决方案2】:

    刚刚找到profile in Clojure contrib

    它不适用于大量代码(它在 VisualVM 处理得很好的 Project Euler 解决方案上因 OutOfMemoryError 而爆炸)并且它需要您在要分析的函数中插入分析调用。

    不过,在您只想分析几个函数的情况下,它是 VisualVM 的更好替代方案。

    【讨论】:

    • 这个已经过时了。
    【解决方案3】:

    有一个新的 Clojure 库提供分析:https://github.com/ptaoussanis/timbre

    【讨论】:

    • 我更喜欢这个而不是 VisualVM,因为它使用和控制都很轻。
    • 这似乎只为 ClojureScript 提供分析。
    • 音色分析已被弃用,现在采用 tufte:github.com/ptaoussanis/tufte
    【解决方案4】:

    快速提醒一下,我已弃用 Timbre 的配置文件,以便在 https://github.com/ptaoussanis/tufte 处使用新的专用 Clojure + ClojureScript 分析库。

    这基本上是对 Timbre 内容的改进,加上专门的文档。

    自述文件包含一个 comparison 以及 VisualVM、YourKit 等 JVM 工具。

    【讨论】:

      猜你喜欢
      • 2019-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多