Groovy file.append()vs file.newWriter()

tni*_*hol 1 groovy file

我编写了几个使用file.write()和file.append()或简单地"file << string"编写平面文件的Groovy程序.我最近在研究这种方法时遇到了一些信息,其中人们说这可能效率低,因为附加到文件意味着追加打开文件,找到结束,写入文件,并在每次调用追加时关闭它.在某些程序中,当我从数据库中选择数据后写入文件时,我可能会多次调用它.

我进一步读到使用文件编写器更有效,例如声明

fileWriter = new file.newWriter() 
Run Code Online (Sandbox Code Playgroud)

然后发行

fileWriter.write() 
Run Code Online (Sandbox Code Playgroud)

代替.我的问题是,其他人在做什么,有人知道在什么时候考虑改变使用文件编写器是值得的?到目前为止,我还没有注意到性能上的提升; 但是,我还有几个要编写的程序,它们会生成一些大的平面文件,如果使用文件编写器是有意义的,我宁愿改变以前的程序,而不是以后使用它.

Opa*_*pal 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()
Run Code Online (Sandbox Code Playgroud)