내가이 같은 기능을 가지고 가정 : 이제Scala Future의지도에 오버 헤드가 추가됩니까?
import scala.concurrent._
def plus2Future(fut: Future[Int])
(implicit ec: ExecutionContext): Future[Int] = fut.map(_ + 2)
내가 만들 plus2Future
를 사용하여 오전 Future
새로운 :
import import scala.concurrent.ExecutionContext.Implicits.global
val fut1 = Future { 0 }
val fut2 = plus2Future(fut1)
는 동일한 스레드로 지금 기능을 plus2
항상 실행합니까 fut1
? 나는 그렇지 않다고 생각한다.
map
을 plus2Future
에 사용하면 스레드 컨텍스트 전환의 오버 헤드가 추가되어 새로운 Runnable
등이 생성됩니까?
* 스레드 컨텍스트 전환과 관련된 오버 헤드를 방지하려면 * 코드를 벤치마킹 할 때 오버 헤드가 있는지 확인 했습니까? –
동일한 스레드에서 실행하려면 'Future {plus2 (plus1 (x))}'를 수행하십시오. 아니면 단지 'plus2 (plus1 (x))'... 미래를 만드는 "오버 헤드"를 피하기 위해 :) – Dima
@YuvalItzchakov 아니요, 코드를 벤치 마크하지 않았습니다. 나는 그 질문을 바꿔 말할 것이다. – Michael