想知道scala fs2 stream中块大小的增加是否会带来性能提升?
import cats.effect.{IO, Sync}
import fs2.{io, text}
import java.nio.file.Paths
def fahrenheitToCelsius(f: Double): Double =
(f - 32.0) * (5.0/9.0)
def converter[F[_]](implicit F: Sync[F]): F[Unit] =
io.file.readAll[F](Paths.get("testdata/fahrenheit.txt"), 4096)
.through(text.utf8Decode)
.through(text.lines)
.filter(s => !s.trim.isEmpty && !s.startsWith("//"))
.map(line => fahrenheitToCelsius(line.toDouble).toString)
.intersperse("\n")
.through(text.utf8Encode)
.through(io.file.writeAll(Paths.get("testdata/celsius.txt")))
.compile.drain
// at the end of the universe...
val u: Unit = converter[IO].unsafeRunSync()
答案 0 :(得分:1)
此块大小只是从文件系统读取文件内容时使用的缓冲区大小。所以你的问题等同于"在读取文件时会增加缓冲区大小会带来性能提升吗?"。
此问题是特定于操作系统/硬件的。大多数情况下的简短回答 - 4K就足够了。