gpt4 book ai didi

clojure - lein run 和 java -jar myapp 性能一样吗?

转载 作者:行者123 更新时间:2023-12-02 18:59:03 25 4
gpt4 key购买 nike

我正在学习 clojure luminus Web 框架。在本教程中,我可以简单地使用项目目录中的 lein run 来运行我的应用程序。当然,我可以使用 lein uberjar 编译该项目,并使用 java -jar myapp.jar 运行它。我发现在负载测试期间 java -jar myapp.jar 方法稍微快一些。

问题:

  1. clojure 代码在 REPL 中运行时是否经过编译?

  2. 为什么运行 jar 文件比 lein run 方法更快? (如有错误,请指正。)

  3. 运行编译后的jar文件时是否可以打开REPL

最佳答案

  1. 是的Clojure 代码总是被编译Clojure 只有一种执行机制。每次您在顶级表单末尾的 repl 中按 Enter 键时,编译器都会运行。没有任何东西被解释。除此之外,请记住,对这些东西进行基准测试很困难并且需要仔细进行。
  2. 通过 REPL 调用函数和不通过 REPL 调用函数实际上没有区别。通过 REPL 加载 namespace 和从 jar 加载 namespace 之间的唯一区别是文件中的最后一个表单被发送回 n-repl,并且状态消息被发送回 n-repl。 将代码放入 jar 中不会改变编译过程它仍然在加载时进行编译。如果显式 AOT 代码,则启动时间会更短,之后运行速度将相同。再次强调,对这些事情进行基准测试是很困难的。除了使所有其他内容都相同之外,请确保在两种情况下使用相同的日志记录
  3. 是的,我几乎在每个项目上都会这样做。只需运行:
    (nrepl/start-server:port 端口:bind "127.0.0.1")
    这要求您使用 ssh 端口转发来访问套接字,这是一个很好的安全实践。不要让你的 nrepl 端口悬在那里。

关于clojure - lein run 和 java -jar myapp 性能一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39061170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com