performance - Groovy shell 启动速度慢得可怕

标签 performance groovy windows-7 groovyshell

我正在运行交互式 Groovy Shell在我的机器上启动实际上需要分钟(一台配备 Intel i5 处理器和 4 GB RAM 的 Windows 7 笔记本电脑,所以不是一台古老的计算机,只是一个中间的计算机)

使用groovy运行简单的脚本或groovyclientgroovyserver需要可接受的时间(最多几秒),但在运行 groovysh 之后光标开始闪烁......足够长的时间让我泡茶,写下这个问题并在 Twitter 上对此进行咆哮(仍然没有提示编写任何代码)

尝试使用以下配置

  • Groovy Version: 2.3.4 JVM: 1.7.0_03 Vendor: Oracle Corporation OS: Windows 7
  • Groovy Version: 2.3.4 JVM: 1.8.0_20 Vendor: Oracle Corporation OS: Windows 7

而且完全一样。

我真的很希望能够以 REPL 风格使用它。有没有人遇到并解决过类似的问题?您能为这项工作推荐一个不同的工具吗?

根据评论中的建议,我运行了 groovysh -d -v启用调试和详细输出,希望看到什么需要这么长时间。

groovysh -d -v的输出

DEBUG [org.codehaus.groovy.tools.shell.BufferManager] Created new buffer with index: 0
DEBUG [org.codehaus.groovy.tools.shell.BufferManager] Buffers reset
DEBUG [org.codehaus.groovy.tools.shell.Parser] Using parser flavor: rigid
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: ?
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :help
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :quit
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :exit
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: import
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :display
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :clear
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :show
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :inspect
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :purge
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :edit
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: .
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :load
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :save
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :record
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :history
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :alias
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :set
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :register
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :doc

很长一段时间,没有进一步的输出,然后在几秒钟内完成整个休息:

DEBUG [org.codehaus.groovy.tools.shell.Groovysh] Terminal (jline.AnsiWindowsTerminal@66f57048)
DEBUG [org.codehaus.groovy.tools.shell.Groovysh]     Supported:  true
DEBUG [org.codehaus.groovy.tools.shell.Groovysh]     ECHO:       (enabled: false)
DEBUG [org.codehaus.groovy.tools.shell.Groovysh]     H x W:      41 x 169
DEBUG [org.codehaus.groovy.tools.shell.Groovysh]     ANSI:       true
DEBUG [org.codehaus.groovy.tools.shell.Groovysh]     Direct:     true
DEBUG [org.codehaus.groovy.tools.shell.InteractiveShellRunner] Using history file: C:\Users\Tomek\.groovy\groovysh.history
Groovy Shell (2.3.4, JVM: 1.8.0_20)
Type ':help' or ':h' for help.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[1] for command: :help
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[2] for command: ?
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[3] for command: :exit
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[4] for command: :quit
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[5] for command: import
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[6] for command: :display
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[7] for command: :clear
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[8] for command: :show
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[9] for command: :inspect
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[10] for command: :purge
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[11] for command: :edit
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[12] for command: :load
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[13] for command: .
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[14] for command: :save
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[15] for command: :record
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[16] for command: :history
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[17] for command: :alias
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[18] for command: :set
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[19] for command: :register
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[20] for command: :doc
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Refreshing the completer list
DEBUG [org.codehaus.groovy.tools.shell.InteractiveShellRunner] Running
groovy:000>

最佳答案

7年后......好吧,这是另一个答案建议。我遇到了类似的问题并调查发现,在启动时,groovysh 尝试通过调用 PackageHelperImpl 来解析类。 。这里的问题是它递归地扫描所有子目录。因此,groovysh 启动速度极慢的原因之一是,在尝试启动它的位置下有一个巨大的文件层次结构。要测试这一点,请尝试以完全相同的方式启动它,但在没有子目录的文件夹中。

关于performance - Groovy shell 启动速度慢得可怕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26235367/

相关文章:

c# - .NET Framework - 有什么方法可以让 Dictionary<> 更快一点?

mysql - MySQL 中来自 PostgreSQL 的 "Index-only scans"的模拟

php - 绑定(bind)参数的 MySQL 性能问题

java - 如何从 Java 调用 groovy 类的方法 - 字符串格式的方法名称和参数

groovy 调用方法名称包含特殊字符

visual-studio-2010 - Visual Studio 2010 MFC 对话框 : Aero style?

c++ - 为什么设置CPU亲和性会使线程运行更慢?

java - ClassLoader 是否应该能够从不同的包中解析和加载类?

Python 和 Py2Exe : "%1 Is Not A Valid Win32 Application"

python - Spyder - 控制台命令提示符从 >>> 更改为 In : after help ('modules' ) command