Groovy I / O性能问题

我不是一个时髦的专家,只是不时使用它.最新目标之一是生成一个包含一些随机数据的非常简单的文件.我创建了以下脚本:

out = new File('sampledata.txt')
Random random = new Random();
java.util.Date dt = new java.util.Date();

for (int i=0; i<100000; ++i) {
    dt = new java.util.Date();
    out << dt.format('yyyMMdd HH:mm:ss.SSS') + '|box|process|||java.lang.Long|' +   random.nextInt(100) + '|name\n'
}

现在,我对它的表现感到困惑.完成大约需要1.5分钟,而用Java或Ruby编写的相同代码只需不到一秒钟.

Ruby中的类似代码(执行大约需要1秒):

需要“时间”

File.open("output.txt","w") do |file|
  100000.times do 
    line = Time.now.strftime("%Y%m%d %H:%M:%S.%L") + '|box|process|||java.lang.Long|' + rand(100).to_s + '|name'
    file.puts line
  end
end

有什么想法可以改善groovy的处理速度?

解决方法

左移操作符打开文件,跳转到最后,附加文本,然后再次关闭文件…

相反,尝试:

Random random = new Random();

// Open the file and append to it.
// If you want a new file each time,use withWriter instead of withWriterAppend
new File('sampledata.txt').withWriterAppend { w ->
  100000.times {
    w.writeLine "${new Date().format('yyyMMdd HH:mm:ss.SSS')}|box|process|||java.lang.Long|${random.nextInt(100)}|name"
  }
}

(这也更像是Ruby代码正在做的事情)

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...