我编写了几个使用file.write()和file.append()编写平面文件的Groovy程序,或者只是" file<<字符串&#34 ;.我最近在研究这种方法时遇到了一些信息,其中人们说这可能效率低,因为附加到文件意味着追加打开文件,找到结束,写入文件,并在每次调用追加时关闭它。在某些程序中,当我从数据库中选择数据后写入文件时,我可能会多次调用它。
我进一步读到使用文件编写器更有效,例如声明
fileWriter = new file.newWriter()
然后发出
fileWriter.write()
代替。我的问题是,其他人在做什么,有人知道在什么时候考虑改变使用文件编写器是值得的?到目前为止,我还没有注意到表现受到打击;但是,我还有几个要编写的程序会生成一些大的平面文件,如果使用文件编写器是有意义的,我宁愿改变以前的程序,而不是以后使用它。
答案 0 :(得分:5)
一个简单的基准来说明问题:
@Grab(group='org.gperfutils', module='gbench', version='0.4.2-groovy-2.1')
def b = benchmark {
'append' {
def f = File.createTempFile('file', 'append')
(1..1000).each {
f.append(it.toString())
}
}
'writer' {
def f = File.createTempFile('file', 'writer')
def w = f.newWriter()
(1..1000).each {
w.write(it.toString())
}
}
}
b.prettyPrint()