Scala 로 병렬 프로그래밍을 하고자 할때, primitive 값들 위주의 parallel operation 을 진행하고자 한다면, scala blitz library 를 사용하는 것이 훨씬 빠르다.
import scala.collection.par._ import scala.collection.par.Scheduler.Implicits.global object Blitz extends App { val array = (0 until 100000).toArray // JVM JIT optimization 을 고려하여 충분히 해당 expression 들을 수행한뒤(1000번) body 를 수행 val seqtime = warmedTimed(1000) { array.reduce(_ + _) } val partime = warmedTimed(1000) { array.par.reduce(_ + _) } val blitztime = warmedTimed(1000) { array.toPar.reduce(_ + _) } log(s"sequential time - $seqtime") log(s"parallel time - $partime") log(s"ScalaBlitz time - $blitztime") }실행 시간은 아래와 같다.
main: sequential time - 2.317
main: parallel time - 1.031
main: ScalaBlitz time - 0.046
놀랍게도 Blitz library 를 사용한 것이 10배 이상 빠르다.
'Programming > Scala' 카테고리의 다른 글
Merging sequence of Futures of Lists into one Future containing merged list (0) | 2016.03.09 |
---|---|
scala 공부 자료 (0) | 2015.12.02 |
Scala Palallelizable Collection (0) | 2015.11.11 |
slick maven setting (0) | 2013.11.30 |
scala download (0) | 2013.11.29 |