如果你问我最喜欢的Clojure工具,前五名的话一定会有 Clojure 的火焰图工具 Flames [jstepien/flames] 。
火焰图对于现代的程序员不应该陌生,这个工具可以非常直观的显示出调用栈中的CPU消耗瓶颈:
火焰图工具几乎都是由同一组底层工具支撑的,大部分都遵循:Profile->收集 Profile 日志 -> 生成火焰图 -> 分析问题的流程,但是这个 Clojure 库,却可以近乎实时的生成火焰图,提供实时查看,能够极大的提高工作效率。
实用它只需要引入依赖:
[flames "0.4.0"]
然后在项目里写几行代码:
(require '[flames.core :as flames])
(defflames (flames/start! {:port 54321, :host "localhost"}))
非常简单直观。
需要注意的是,与其它大部分火焰图工具一样,这个库也是在底层依赖一组基于 Perl 的性能剖分工具来生成图表,所以在windows上可能会遇到类似“找不到 perl”这样的错误提示。但是它在 MacOS 和 Linux上都没有任何问题。
图形是 svg,每个函数可以点击进去查看局部的调用栈,项目比较大的时候,往往会看到应用逻辑被画在一个尖细的高峰中,此时这个功能就很体贴了。
后面的章节中,如果我们构建了比较适合展示性能剖分过程的场景,就向大家演示一下这个工具具体使用。