parapet-io/parapet

FS2 Queue 'enqueue' is slow

dmgcodevil opened this issue · 1 comments

FS2 Queue 'enqueue' is slow:

  val n = 1000000

  val elements: Vector[Int] = (0 until n).foldLeft(Vector.empty[Int])(_ :+ _)
  val chunk = Chunk.apply(elements: _*)

  override def run(args: List[String]): IO[ExitCode] = {

    for {
      start <- IO(System.nanoTime())
      q <- fs2.concurrent.InspectableQueue.bounded[IO, Int](n)
      _ <- fs2.Stream.chunk(chunk).covary[IO].through(q.enqueue).compile.drain
      time <- IO(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start))
      size <- q.getSize
      _ <- IO(println(s"queue size= $size; time = $time"))
    } yield ExitCode.Success
  }

Original issue: typelevel/fs2#1551

replaced with Monix queue