> Java > java지도 시간 > Java의 System.nanoTime()은 여전히 ​​신뢰할 수 있는 시간 측정 도구입니까?

Java의 System.nanoTime()은 여전히 ​​신뢰할 수 있는 시간 측정 도구입니까?

DDD
풀어 주다: 2024-11-12 00:55:03
원래의
1066명이 탐색했습니다.

Is System.nanoTime() in Java Still a Reliable Time Measurement Tool?

Java의 System.nanoTime()은 정말 쓸모가 없나요?

질문:

A "Java의 System.nanoTime()에 주의하세요"라는 제목의 블로그 게시물은 다음과 같은 우려를 제기합니다. x86 시스템에서는 CPU별 카운터 사용으로 인해 System.nanoTime()이 잘못된 시간 값을 반환할 가능성이 있습니다. 멀티 코어 시스템에서 스레드 예약으로 인해 더 낮은 카운터의 프로세서가 할당되어 시간 차이가 음수 값이 될 수 있습니다.

답변:

블로그 게시물의 주장은 2011년에 작성되었으므로 더 이상 정확하지 않습니다. 후속 운영 체제 업데이트로 Windows 및 Linux에서 이러한 문제가 해결되었습니다.

Windows:

Windows XP 서비스 팩 2 이상에서 System.nanoTime()은 QueryPerformanceCounter를 사용합니다. /QueryPerformanceFrequency API는 HAL(하드웨어 추상화 계층)에 의해 구현되어 전체에서 일관된 시간 소스를 제공합니다.

Linux:

Linux clock_gettime(CLOCK_REALTIME) 함수는 모든 프로세서에서 시간이 일관되도록 보장합니다. 커널 버전 2.6.18부터 동기화되지 않거나 가변 주파수 타임스탬프 카운터가 감지되면 안전한 클럭 소스가 사용됩니다.

기타 아키텍처:

정보가 제한되어 있습니다. SPARC 및 Solaris와 같은 다른 아키텍처에 대해 사용할 수 있습니다. 그러나 일반적으로 최신 가상 머신(VM)은 기본 하드웨어에 관계없이 게스트 운영 체제에 일관된 시간 소스를 제공한다고 가정합니다.

결론:

시스템 .nanoTime()은 Java에서 시간 차이를 측정하는 유효한 방법으로 남아 있습니다. 2011년 블로그 게시물에서 제기된 문제는 해결되었으며 최신 시스템 구현에는 적용되지 않습니다.

위 내용은 Java의 System.nanoTime()은 여전히 ​​신뢰할 수 있는 시간 측정 도구입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿