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

时间:2014-05-08 20:50:50

标签: file groovy

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

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

fileWriter = new file.newWriter() 

然后发出

fileWriter.write() 

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

1 个答案:

答案 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()