使用钉枪加快 Clojure 启动时间

2023-11-22

我时不时地想用一下会很好clojure for 外壳脚本,但是大约 900ms 的启动时间太慢了。然后我会google首页对于“nailgun clojure”,但显示的唯一结果是针对像 vimclojure 这样的特殊情况。那时我假装没有时间,转向更多awk启动速度更快的病房语言。

那么,怎样才能nailgun用于加快clojure的启动时间?


Debian

执行以下操作一次:

apt-get install nailgun                          # install nailgun
java -server -jar /usr/share/java/nailgun.jar&   # run nailgun server
ng-nailgun ng-cp /usr/share/java/clojure-1.4.jar # add clj to classpath

现在服务器已运行并配置完毕,您可以在其上运行 clojure 脚本:

ng-nailgun clojure.main path/to/myscript.clj

在我的例子中,实际脚本的启动时间下降到 80 毫秒,而没有钉枪时为 900 毫秒。

To 使运行实际脚本更加方便,创建一个可执行文件ng-clojure包含以下行,并将其放在路径中的某个位置:

ng-nailgun clojure.main "$@"

In your Clojure shell 脚本,将其添加为第一行:

#!/usr/bin/env ng-clojure

然后使 clojure shell 脚本可执行并像这样运行它

path/to/myscript.clj

OSX

brew install nailgun
ng-server 
ng ng-cp ~/.m2/repository/org/clojure/clojure/1.5.1/clojure-1.5.1.jar 

然后按照上面的方法执行您的脚本。

Update: 使用了一段时间,感觉效果不是很好。有时我得到随机误差没有钉枪跑步时不会发生这种情况,有时似乎会出现内存泄漏这使得钉枪 JVM 随着时间的推移消耗所有内存,最终使系统交换到磁盘。还没有记忆分析这一点,但想添加这个注意事项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用钉枪加快 Clojure 启动时间 的相关文章

随机推荐

  • C++程序崩溃时会自动释放内存吗?

    我在 Google C 编码标准中读到 Google 不使用异常 如果不使用异常 当程序发生错误时如何释放内存 例如 f 调用 g 如果 g 中出现错误 我应该释放 g 中分配的所有内存 然后对 f 调用异常 一旦 f 捕获异常 f 将释放
  • 随机化 Java 中读取的文本文件

    我正在尝试用 Java 读取一个文本文件 基本上是一组问题 有四个选择和一个答案 结构如下 question option a option b option c option d answer 我这样读起来没有问题 public clas
  • Maven 插件在构建过程中执行多次

    我有一个具有多个重叠配置文件的 Maven 项目 我想在每次构建开始时显示活动配置文件 所以我将以下内容放入pom xml
  • CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触摸视图

    我在 Android 中遇到以下错误 CalledFromWrongThreadException 仅 创建的原始线程 视图层次结构可以触摸其视图 当我尝试更新 Activity 中的 Textview 时 似乎会发生这种情况 更新 Tex
  • ResultSet getFetchSize() 似乎不起作用?

    我遇到了问题getFetchSize 功能 我只需要知道 SQL 查询是否返回零行 我尝试过这个简单的声明 if rs getFetchSize 0 System out println HEADLINE where rs是属于Result
  • 动态添加和删除表行 - Android

    我正在尝试从 TableLayout 中动态添加和删除行 布局在 xml 文件中定义 我能够成功删除一行 但是当我调用相应的 addView 命令时什么也没有发生 table TableLayout findViewById R id ta
  • 将 MySql 日期时间戳转换为 JavaScript 日期格式

    有谁知道我如何获取MySQLdatetime数据类型值 例如YYYY MM DD HH MM SS并解析它或将其转换为在 JavaScript 中工作Date 函数 例如 Date YYYY MM DD HH MM SS 谢谢你 这里给出的
  • php - ftp_get - 警告:ftp_get():打开 BINARY 模式数据连接

    我正在尝试编写一个从 FTP 服务器下载文件的脚本 它们都相当大 每个接近 2GB 该脚本开始运行 但最终因上述错误而终止 与大小有关吗 有没有解决的办法 这是代码
  • Docker RUN 不会保留文件

    我有一个 Docker 问题 它不持久通过 RUN 启动命令 这是我的 Dockerfile FROM jenkins latest RUN echo foo gt var jenkins home toto ls alh var jenk
  • Tomcat NioEndpoint - 运行套接字处理器时出错

    在Spring Boot生产应用中 偶尔会抛出以下异常 o a t u n NioEndpoint Error running socket processor java util NoSuchElementException No val
  • 如何为重叠的 x 轴标签替换新行?

    当在 x 轴上绘制长文本因子时 ggplot 的效果并不好 我想换一条新线 以便更清晰 因此下图中的红色标记标签应该向下一行 我在 中找到了这个问题的答案在这里评论但无法工作 代码是 scale x discrete labels func
  • 在Java中实现阻塞函数调用

    在 Java 中实现阻塞函数调用的推荐 最佳方法是什么 稍后可以通过另一个线程的调用来解除阻塞 基本上我想在一个对象上有两个方法 其中第一个调用会阻塞任何调用线程 直到另一个线程运行第二个方法 public class Blocker An
  • javascript 的 Promise、事件循环和作业队列

    考虑以下代码 function foo console log foo new Promise function resolve reject setTimeout function resolve RESOLVING 5000 then
  • OSMdroid 添加自定义图标到 ItemizedOverlay

    我正在使用 ItemizedIconOverlay 类 当前正在地图上显示事件以及具有相同默认图标的用户位置 如何更改每个叠加层的图标集 是否有类似于 google maps 示例的内容 drawable getResources getD
  • Keras:类型错误:无法使用 KerasClassifier pickle _thread.lock 对象

    import pandas as pd import numpy as np import matplotlib pyplot as plt dataset pd read csv Churn Modelling csv X dataset
  • 在选择框中重新填充日期

    我在 Rails 中创建了一个 date select 它有 3 个选择框 一个代表年份 一个代表月份 一个代表日期 2 月 31 日在他们身上是相当令人困惑的 我希望能够只让选择框包含有效日期 我的意思是 当您选择二月时 31 日 30
  • 重建/获取 PHP 函数的源代码

    我可以通过编程方式通过函数名称获取函数的源代码吗 Like function blah a b return a b echo getFunctionCode blah 是否可以 是否有任何 php 自描述函数可以重构函数 类代码 我的意思
  • 如何禁用 Android Studio 3.0 的即时运行

    进行一些更改后 我收到错误 会话 app 安装 APK 时出错 据一些人说 这是因为 Instant Run 在最新的Stable Android Studio 3 0上 在构建 执行 部署我没有任何 即时运行 选项 即使在设置搜索中进行了
  • 如何在C++中将自定义项目添加到系统菜单?

    我需要枚举所有正在运行的应用程序 特别是所有顶部窗户 对于每个窗口 我需要将自定义项目添加到该窗口的系统菜单中 我怎样才能在 C 中实现这一点 Update 我非常乐意为 Windows MacOS 和 Ubuntu 提供解决方案 不过 我
  • 使用钉枪加快 Clojure 启动时间

    我时不时地想用一下会很好clojure for 外壳脚本 但是大约 900ms 的启动时间太慢了 然后我会google首页对于 nailgun clojure 但显示的唯一结果是针对像 vimclojure 这样的特殊情况 那时我假装没有时