본문 바로가기

Programming/Scala

Scala 병렬 계산을 위한 Blitz library

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