【发布时间】:2011-05-26 13:16:43
【问题描述】:
我在 Clojure 中编写了一些小型实用程序应用程序,我使用 Maven 和 maven-shade-plugin 将它们编译成独立的可执行 JAR 文件(“uberjars”)。这些 uberjars 包含 clojure.jar 的解压版本和应用程序依赖的其他库(即:commons-cli)。它们很方便,因为我可以将它们发送给客户,而无需客户安装 Clojure(所有客户都已经安装了 JRE)。
我发现 Clojure 应用程序需要几秒钟才能启动,而用 Java 编写的类似应用程序在同一台机器上启动只需亚秒级(例如,显示使用消息的时间)。
我怀疑这是因为 Clojure 正在即时编译 clojure.core 库中的一些代码,因为 clojure.jar 文件中有源代码(.clj 文件)。
有没有办法预编译这个源代码?可以做些什么来加快启动性能吗?我听到客户抱怨启动需要多长时间(他们不知道也不关心应用程序是用 Clojure 或 Java 或 Foobar 编写的)。
【问题讨论】:
标签: performance clojure startup