我正在学习clojure luminus web框架。在本教程中,我可以在项目目录中使用SceneManager.LoadScene(level.name.toString());
运行我的应用程序。当然,我可以使用lein run
编译项目,并使用lein uberjar
运行它。我发现负载测试期间java -jar myapp.jar
方法稍快一些。
问题:
在java -jar myapp.jar
中运行clojure代码时是否已编译?
为什么比REPL
方法更快地运行jar文件? (如果我错了,请纠正我。)
运行已编译的lein run
文件时是否可以打开REPL
?
答案 0 :(得分:1)
(nrepl/start-server :port port :bind "127.0.0.1")
答案 1 :(得分:0)
出现这种情况的原因有很多。最明显的是lein使用的TiredCompilation选项。它改变了JIT行为,因此它可以显着影响基准测试结果。
您可以通过lein禁用更改JVM选项:
:jvm-opts ^:replace []
或者
$ export LEIN_JVM_OPTS=
请参阅lein wiki。
答案 2 :(得分:0)
至少有两个主要因素:
JVM参数可能不同,当您使用lein run
时,它们可以通过lein配置控制,如果您通过java ...
手动运行,则可以直接由您控制。 HotSpot编译器选项,内存和GC配置等参数。您可以使用jstat
,jinfo
和jconsole
等工具来检查有效的JVM设置。
检查您的lein配置文件以及哪种情况都可以运行。您可以在两个不同的应用程序配置中运行应用程序,例如ring的热代码重新加载,不同的环中间件集(检查项目的env
目录中的文件)等。