2014-01-06 2 views
0

scala.Predef 클래스의 초기화는 예기치 않은 응용 프로그램 감속을 유발할 수 있으며 프로그램 진행과 같이 타이밍 문제가 발생할 경우 문제가 될 수 있습니다.코드에 영향을 미치지 않고 응용 프로그램 시작시 미리 정의 초기화

val a = new Array[Integer](10) 
a(5) = 3 //slowdown on this line 

그래서 나는 해제 할 수 있습니다 그것의 응용 프로그램에 scala.Predef 초기화 코드에서 변경하지 않고 단지 스칼라 컴파일러 나 VM 옵션을 사용하기 시작 게으름 힘?

+0

이 수준의 최적화가 필요한 경우에는 JVM에 코딩하지 않아야합니다. – wheaties

답변

0

아니요. 당신은 여전히이

Predef // ensures the body of Predef is initialized 
val a = new Array[Integer](10) 
a(5) = 3 

처럼, 그것을 호출하여 객체를 초기화 할 수 있습니다, 당신은 아마 a.apply에 참여하는 ArrayOps 클래스를 초기화하지 않습니다. Lazy 클래스 초기화는 JVM의 속성입니다. 벤치마킹을한다면, 일반적으로 먼저 "워밍업 (warmup)"을 먼저 수행하여 관련된 모든 클래스가 먼저로드되도록해야합니다.