Linux 机器上的 Groovy 性能

Linux 机器上的 Groovy 性能

当我在我的一台 Linux 机器上启动 Groovy 时遇到一个问题 —— 执行非常简单的命令大约需要 30 秒:

groovy -e ""

如果我运行strace它,我会看到它停止并等待的位置如下:

mprotect(0x7fae284e0000, 4096, PROT_NONE) = 0
clone(child_stack=0x7fae285dfff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fae285e09d0, tls=0x7fae285e0700, child_tidptr=0x7fae285e09d0) = 62660
futex(0x7fae285e09d0, FUTEX_WAIT, 62660, NULL <unfinished ...>

有没有办法弄清楚它在等待什么、为什么等待以及如何修复它?

我正在运行 Red Hat 6.3,Groovy 版本:2.2.1 JVM:1.7.0_25 供应商:Oracle Corporation 操作系统:Linux

这是时间命令:

bin$ 时间 groovy -e“”

实际 0m22.255s 用户 0m26.875s 系统 0m2.064s

答案1

groovy 启动时间非常长(与其他解释型语言相比)的原因在于它必须为每个groovy命令启动一个 JVM。

你可能想看看Groovy服务。它的作用是首次启动时在后台运行带有 JVM 的守护进程。随后的调用将groovyclient改用此 JVM。它承诺“比常规 Groovy 快 10 到 20 倍”。

相关内容