首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加快黄曲柳文本的处理速度?

如何加快黄曲柳文本的处理速度?
EN

Stack Overflow用户
提问于 2015-05-14 14:14:04
回答 2查看 135关注 0票数 3

如何加快以下scalaz-stream代码的速度?目前,处理70 of的文本大约需要5分钟,所以我可能做了一些非常错误的事情,因为普通的scala等价物需要几秒钟时间。

(跟进another question)

代码语言:javascript
复制
  val converter2: Task[Unit] = {
    val docSep = "~~~"
    io.linesR("myInput.txt")
      .flatMap(line => { val words = line.split(" ");
          if (words.length==0 || words(0)!=docSep) Process(line)
          else Process(docSep, words.tail.mkString(" ")) })
      .split(_ == docSep)
      .filter(_ != Vector())
      .map(lines => lines.head + ": " + lines.tail.mkString(" "))
      .intersperse("\n")
      .pipe(text.utf8Encode)
      .to(io.fileChunkW("correctButSlowOutput.txt"))
      .run
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-28 08:35:28

以下是@user1763729关于分块的建议,它感觉很笨重,而且和原来的版本一样慢。

代码语言:javascript
复制
  val converter: Task[Unit] = {
    val docSep = "~~~"
    io.linesR("myInput.txt")
      .intersperse("\n") // handle empty documents (chunkBy has to switch from true to false)
      .zipWithPrevious // chunkBy cuts only *after* the predicate turns false
      .chunkBy{ 
        case (Some(prev), line) => { val words = line.split(" "); words.length == 0 || words(0) != docSep } 
        case (None, line) => true }
      .map(_.map(_._1.getOrElse(""))) // get previous element
      .map(_.filter(!Set("", "\n").contains(_)))
      .map(lines => lines.head.split(" ").tail.mkString(" ") + ": " + lines.tail.mkString(" "))
      .intersperse("\n")
      .pipe(text.utf8Encode)
      .to(io.fileChunkW("stillSlowOutput.txt"))
      .run
  }

编辑:

实际上,执行以下操作(只是读取文件,不进行写入或处理)已经需要1.5分钟,所以我想加快速度的希望不大。

代码语言:javascript
复制
  val converter: Task[Unit] = {
    io.linesR("myInput.txt")
      .pipe(text.utf8Encode)
      .run
  }
票数 0
EN

Stack Overflow用户

发布于 2015-05-14 23:38:33

我认为您可以使用一个process1块方法来块。如果您希望对合并成输出格式的行进行大量并行处理,请确定有序输出是否重要,并使用与合并或tee相结合的通道。这也将使其可重用。因为你的处理量很小,所以你的工作量很大,所以你必须更加努力地工作,使你的工作单位足够大,不至于被淹没。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30239621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档