【问题标题】:Is there anyway to reduce nrepl (ritz-repl) startup time?有没有办法减少 nrepl (ritz-repl) 的启动时间?
【发布时间】:2013-05-14 22:20:23
【问题描述】:

我之前没有使用过 ritz-nrepl,nrepl 花了大约 10 秒,虽然很长但仍然可以忍受,因为我不经常重新启动它。

当我试用 ritz-repl 时,启动需要将近 30 秒,并且消耗大约 1.3G 内存。 这让我不愿意使用它。

我什至扔了一个 SSD 希望它可以提高速度,因为我听到有人提到他“几乎没有注意到 lein repl 启动时间”使用 ubuntu + ssd。但是我自己无法分辨ssd和hdd之间的区别。我不知道是我做错了什么还是只是一个神话。

【问题讨论】:

  • 我只在需要大量变量自省时才启动它。其余时间我使用正常的 nrepl。我的用户体验是 ritz-nrepl 还远未成熟。我正在使用 Fedora+SSD,就是这样,30 秒对我来说是完全正常的。此外,由于我必须在全局范围内停用自动完成 (ac-nrepl)(否则 emacs 会冻结),因此在开发工作流程的大部分时间里,它并不是很有吸引力。
  • 感谢您的信息!顺便说一句,您的原始 nrepl 启动时间如何?我得到 6s 没有依赖关系,大约 15s 有 7 个左右。
  • 是的,我没有测量它,但仅此而已。对于大多数开发,我通常通过使用这个宏在 repl 中进行自省: (defmacro dbg [x] `(let [x# ~x] (println "dbg:" '~x "=" x#) x#))跨度>

标签: clojure nrepl


【解决方案1】:

可能有一些方法可以减少包含 ritz 的 nrepl 服务器的启动时间,但在大多数情况下,您至少会被困在启动机器上的 jvm 所需的 10 秒内。对我来说,在进行交互式开发时,这是一种无法接受的延迟。

作为替代方案,您可以使用the clojure.tools.namespace library 使用更智能的代码重新加载方法。它基本上在内存中保留了一个依赖关系图,并仅重新加载自上次刷新以来已更改的命名空间。

这对于某些但不是所有 Clojure 代码都是开箱即用的。请参阅the 'Preparing Your Application' section of the readme 了解有关要避免的边缘情况的更多信息。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2020-02-08
    • 1970-01-01
    相关资源
    最近更新 更多