Ich habe seltsame Beobachtung über Scala-Streams sinkt. Sie arbeiten langsam. Weiß jemand, warum ist das? Und gibt es eine Möglichkeit, die Leistung zu verbessern?Wie verbessert man die Leistung von Code mit Sink?
hier sind relevante Teile meines Code: Version ohne Waschbecken
//p is parameter with type p: Process[Task, Pixel]
def printToImage(img: BufferedImage)(pixel: Pixel): Unit = {
img.setRGB(pixel.x, pixel.y, 1, 1, Array(pixel.rgb), 0, 0)
}
val image = getBlankImage(2000, 4000)
val result = p.runLog.run
result.foreach(printToImage(image))
diese ~ 7s
Version mit Spüle
//p is the same as before
def printToImage(img: BufferedImage)(pixel: Pixel): Unit = {
img.setRGB(pixel.x, pixel.y, 1, 1, Array(pixel.rgb), 0, 0)
}
//I've found that way of doing sink in some tutorial
def getImageSink(img: BufferedImage): Sink[Task, Pixel] = {
//I've tried here Task.delay and Task.now with the same results
def printToImageTask(img: BufferedImage)(pixel: Pixel): Task[Unit] = Task.delay {
printToImage(img)(pixel)
}
Process.constant(printToImageTask(img))
}
val image = getBlankImage(2000, 4000)
val result = p.to(getImageSink(image)).run.run
dieses 33 Sekunden dauert auszuführen nimmt auszuführen . Ich bin hier total verwirrt wegen dieses signifikanten Unterschieds.
Danke, das erklärt dieses seltsame Verhalten. Ich dachte, das ist ein eher leichter Prozess. – user2963977