【问题标题】:How to run Clojure code faster from the command line?如何从命令行更快地运行 Clojure 代码?
【发布时间】:2013-11-13 13:55:52
【问题描述】:

我需要一种方法来更快地运行Clojure 代码。我对几乎所有语言都使用SciTE,包括Clojure,这意味着您必须运行Clojure,几乎与从命令行运行它的方式相同。我创建了一些批处理文件,在点击<F5> 时运行Clojure 文件:

@java -cp C:\clojure-1.5.1\clojure-1.5.1.jar clojure.main %*

我的主要抱怨是运行 Clojure 文件需要将近 2 秒才能运行,这是不可接受的。我希望代码像Clooj 一样快地运行(编译得更快?),同时在另一个选项卡中有一个pythonLisp 文件,用于实验和SciTE 可以提供的其他东西。我想知道 Clooj 如何在不到一秒的时间内运行/评估整个文件,这样我就可以在 SciTE 中重现相同的内容,而不必在两者之间切换测试某些代码是否可以在 Common Lisp 中未经修改地运行的示例。如果有一种方法可以像clisp -q -x "(print 'under-a-second)" 这样从命令行评估代码,那就太棒了。

我的主要目标是不离开SciTEClojure-Lisp 代码比较)并且仍然能够更快地运行代码(我说的是启动,而不是优化)。

更新:

Clojure 编译器可以从命令行评估代码(在 jar 文件中的 main.clj 中找到它),这样:

java -cp clojure-1.5.1.jar clojure.main -e "(print 'hello)"  

坏消息是它编译的表达式与前一个一样平均需要 2 秒。

【问题讨论】:

    标签: command-line clojure scite


    【解决方案1】:

    还有grenchman,它使用一个常设的clojure进程,然后是一个小的OCaml程序向它发送命令并返回结果。

    【讨论】:

    • 似乎没有任何适用于 Windows 的二进制文件。从it 的外观来看,可能无法在windows 中构建Grenchman。我决定试一试 nailgun 并运行服务器,结果发现它需要一个 Java 类文件才能工作。这意味着我必须创建一个项目 makefile,lein compile 它然后是 ng ng-cp test.class 最后。这是向前迈出的一步,也是向后退了 100 步……
    • 哦,我没有注意到它不适用于 Windows。 OCaml 通常非常适合跨平台的东西并且易于编译,除非 grenchman 使用 Windows 不支持的 POSIX 东西。对于大多数编程环境来说,Windows 是一种二等公民,因为它不再是唯一广泛使用的非*NIX 平台。
    • Cygwin 在 Windows 中提供 POSIX 支持以及许多其他功能。仅仅移植一个应用程序可能会很麻烦。
    【解决方案2】:

    我自己还没试过,但你应该看看https://github.com/flatland/drip

    来自自述文件:

    Drip 使用不同的策略。它使用正确的类路径和其他 JVM 选项保留一个新的 JVM,以便您可以在需要时快速连接和使用它,然后将其丢弃。 Drip 对 JVM 选项进行哈希处理,并将有关如何连接到 JVM 的信息存储在以哈希值作为名称的目录中。

    【讨论】:

    • 不幸的是,Drip 仅适用于 Linux。我试图在这个阶段避免构建自动化工具。我的 Clojure 知识很少。我还在研究 Halloway 的书,所以 Nailgun、cake 和任何 JVM 启动器都不在话下。
    【解决方案3】:

    如果您对 ClojureScript 感到满意,那么 lumo 是一个不错的选择。

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      相关资源
      最近更新 更多