반응형
System.currentTimeMillis
- 시스템의 시간을 사용하기 위해서 or 현재 시간을 알아내기 위해서 주로 사용
- 밀리초 단위 사용 (ms) - 1초 = 1000ms
- System.currentTimeMills는 1970 -01 -01 (협정 세계시) 기점으로 흐른 시간을 ms 로 표현해주어 현재 시간으로 변환이 가능
System.nanoTime
- 기준 시점에서 경과 시간을 측정하는데 주로 사용
- 나노초 단위 사용 (ns) 1초 = 1e+9
- 시스템 시간, 현재 시간과 무관
- JVM의 정밀한 시간 소스의 현재 값은 long타입으로, 나노 세컨트 (1/10^-9)로하게 정밀한 시간 표현 가능
- 다른 서버간 통신 시간 측정시 사용하면 안됨
결론
정교한 시간 성능을 측정하기 위해서는 nanoTime()을 추천
시스템 시간과 상관없이 정확한 시간 측정이 가능함.
추가
Instant.now()
- java 1.8 부터 도입된 시간 객체 (기계의 시간 타임스탬프를 인간에게 친숙한 시간으로 다루기 위해서 사용)
- 타임스탬프는 UTC 기준(1970. 1. 1. 0시 0분 0초)을 숫자 0으로 정하고 그로 부터 경과된 시간을 양수 또는 음수로 표현함.
- 1970년 1월 1일 UTC 시작 시점을 기준으로 현재까지 계산
- 시스템 시간을 참조 (운영체제의 시간 값을 기준)
- 밀리초 (toMillis), 초(getSeconds) 모두 계산 가능
Instant current = Instant.now();
System.out.println("Current Instant = "+ current);
long epochSecond = current.getEpochSecond();
System.out.println("Current Timestamp in seconds = " + epochSecond);
/*
Current Instant = 2023-09-14T01:31:09.961Z
Current Timestamp in seconds = 1694655069
*/
참고
[java]System.currentTimeMillis() 와 System.nanoTime() 사용하기.
자바 시간 성능 측정 (nanoTime(), currentTimeMillis(), Instant.now())
반응형
'Spring > Java,Spring' 카테고리의 다른 글
Session Storage Strategy (0) | 2023.09.20 |
---|---|
Lombok 이란? (0) | 2023.09.18 |
Java 8 표준 API의 함수형 인터페이스 (0) | 2023.09.17 |
Oracle JDK & Open JDK (0) | 2023.09.15 |
[Spring Boot] Spring boot 버전에 맞는 Dependency 버전 찾기 (1) | 2021.10.11 |