Performance 为什么替换文件中的子字符串的Scala代码很慢?

Performance 为什么替换文件中的子字符串的Scala代码很慢?,performance,scala,sbt,Performance,Scala,Sbt,我正在使用以下内容替换文件中的子字符串: def mapFile(file: scala.reflect.io.File, replace: String => String) { file.printlnAll(file.lines.toList map replace: _*) } 对于replace,我传递了以下函数:.replaceAlltry(${finalName}”,“some str”) 实际上,这是sbt脚本的一部分,即使对于小文件(几行短文),每个文本文件也需要大

我正在使用以下内容替换文件中的子字符串:

def mapFile(file: scala.reflect.io.File, replace: String => String) {
  file.printlnAll(file.lines.toList map replace: _*)
}
对于replace,我传递了以下函数:
.replaceAlltry(${finalName}”,“some str”)

实际上,这是sbt脚本的一部分,即使对于小文件(几行短文),每个文本文件也需要大约8秒的时间

这里的瓶颈是什么?如何提高绩效

UPD。您可以在这里找到build.sbt:

看起来像这个插件: 可以帮助解决我的问题(替换源文件中出现的
${key}
项,然后将结果放入目标文件夹)

表演很酷。我只需要从SBT 0.13的源代码中重新编译该插件(最新支持的版本针对SBT 0.12)。看


无论如何,我仍然感兴趣的是,在我的例子中,为什么简单的替换比较慢。

scala.reflect.io.File比java.io.File或java.nio.File.Files有什么好处?没有。。。它只是用在围绕这件作品的逻辑上。我可以轻松地获得java类,如果它是帮助SOCK的话)也要考虑是否在映射之前将代码>行>代码转换到列表中。可能整个文件的
toList
是一个昂贵的操作,可以绕过。嗯。在我这边实现了它,替换了40行文件中的单词。只需要0.0022秒。你确定这是你真正的瓶颈吗?看起来很奇怪,一个三行文件需要花费很多时间。你介意在GitHub中共享这个项目吗?