일부 코드의 성능을 측정 할 것입니다. body
결과를 보존하기 위해 도입테스트에서 불필요한 코드 제거를 막기 위해 volatile var에 결과를 작성하십시오.
def timed[T](body: => T) = {
val start = System.currentTimeMillis
blackHole = body
val end = System.currentTimeMillis
end - start
}
blackHole
변수 : 목적 , 나는 다음과 같은 방법을 소개했다. 이 작업은 의 JVM에 의한 코드 제거을 방지하기 위해 수행됩니다.
@volatile
var blackHole: Any = _
왜 하나가 변수 volatile
를 표시해야합니다 : 어떤 책에서
다음과 같이 blackHole
선언되어야한다는 성명이있다?
> 1 초 이상 실행하지 않는 경우 jmh와 같은 마이크로 벤치 마크 프레임 워크를 사용해야합니다 (http://stackoverflow.com/q/504103/1362755 – the8472
참조). 그리고 이상적으로 당신이 명확하게하고 싶은 진술을 인용하십시오. 또한 귀하의 질문 제목이 당신이 여기서 질문 한 질문과 잘 일치하지 않습니다. – Ivan
@ the8472 예, 알고 있습니다. 그러나 특별한 경우에는 왜 여기에 변동성이 중요한지 이해하려고합니다. 스칼라에서 – Aliaxander