我不是一个时髦的专家,只是不时使用它.最新目标之一是生成一个包含一些随机数据的非常简单的文件.我创建了以下脚本:
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代码正在做的事情)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。