2015-01-07 2 views
1

아래와 같이 정의부분 스칼라 함수의 합성 성능

val matches = { 
    case Match(x,y) => ... 
    case AnotherMatch(x,y,z) => ... 
    case x:YetAnother => ... 
} 

한 정의 부분 기능의 성능에 차이가 있습니까?

val match1 = { 
    case Match(x,y) => ... 
} 
val match2 = { 
    case AnotherMatch(x,y,z) => ... 
} 
val match3 = { 
    case x:YetAnother => ... 
} 
val matches = match1 orElse match2 orElse match3 
+7

예. 대부분의 경우 무시할 수있을 것 같지만 후자의 접근 방식이 코드를 더 읽기 쉽고 유지 보수하기 쉽게 만드는 경우이를 사용하고 성능이 실제 문제가되는지 확인한 후에 만 ​​최적화해야합니다. 신청. –

답변

1

의 차이는 일치

Some(x: Int) if x > 0 => x 
Some(x: Int) if x < 0 => -x 
None => 0 

그래서 그것을 꽉 루프에서 중요 할 수있는 경우 2 배에 대해,하지만 자주하지 않습니다.