【问题标题】:Improving startup time of Clojure REPL with Leiningen on the Raspberry Pi在 Raspberry Pi 上使用 Leiningen 改进 Clojure REPL 的启动时间
【发布时间】:2012-12-26 11:48:49
【问题描述】:

我有一个 Rasperry Pi 512 MB 版本(2012 年末)并在上面安装了Developer Preview of Java SE 8 for ARM。当我使用 Leiningen 创建一个新的 Clojure 项目并通过 lein repl 启动 nREPL 时,需要两分钟多一点(大约 130 - 140 秒),直到 REPL 被初始化并可以使用。

当直接启动 JAR 文件 java -jar clojure-1.4.0/clojure-1.4.0 时,REPL 会在 25 秒内启动。

我使用的是 10 级快速 SD 卡(最高 30 MB/s 的 SanDisk Extreme)。为什么使用带有 nRepl 的 Leiningen 与启动 JAR 文件之间的差异如此之大?使用 Leiningen 为 Raspberry Pi 缩短启动时间可以做些什么?

【问题讨论】:

  • lein repl 检查依赖关系,构建项目并准备自动完成和其他类似的恶作剧。你可以尝试做一些聪明的事情,比如让一个加载了 Clojure 的 JVM 来运行 leiningen,但我不确定这实际上会减少多少启动时间。我想理想情况下,您应该尽量不要经常运行lein repl
  • 是的,我也是这么想的。我在 Clojure 邮件列表上看到过类似的讨论,但在台式 PC 或笔记本电脑上,减速并不像在 Raspberry Pi 上那么糟糕。 Common Lisp REPL 在 1 秒内启动,Java 和类路径扫描的性能开销相当大。不确定 Clojure 是否适合嵌入式设备的开发平台。
  • raju-bitter,我很好奇你在 Pi 中使用了什么 Common-Lisp 实现......
  • GNU CLISP 2.49 (2010-07-07),它位于 Wheezy 的存储库中。刚刚做了一个sudo apt-get install clisp

标签: clojure leiningen raspberry-pi


【解决方案1】:

也可以试试grenchman:通过 nREPL 快速调用 Clojure 代码。

【讨论】:

    【解决方案2】:

    你可以试试drip,它封装了java命令,准备一个新的jvm在后台等待。

    【讨论】:

    • 谢谢,我会尝试并在这里报告结果。
    【解决方案3】:

    看来clojure的启动缓慢一般是核心的加载和这里讨论的各种其他事情:

    http://blog.ndk.io/solving-clojure-boot-time.html

    【讨论】:

      【解决方案4】:

      实际上,Leiningen 从它自己的 JVM 开始,然后将项目的 vm 嵌套在其中。
      然后它会检查 deps,找出变化等等。

      您可以像这样使用 lein 的蹦床任务避免 vm 嵌套:
      lein蹦床repl

      但是这个命令需要在项目目录中调用lein

      【讨论】:

        猜你喜欢
        • 2015-09-21
        • 1970-01-01
        • 2018-07-26
        • 2018-11-14
        • 2014-04-02
        • 1970-01-01
        • 1970-01-01
        • 2015-08-11
        • 1970-01-01
        相关资源
        最近更新 更多