티스토리 뷰
System.currentTimeMillis() vs new Date() vs Calendar.getInstance().getTime()
Java에서는 위의 3가지 코드를 통해 time을 얻을 수 있다.
대표적으로 3가지가 주로 사용되고 있죠. Date객체를 사용하는 방법, Calendar클래스의 getInstance() 메서드를 활용하는 방법, System클래스의 currentTimeMillis() 메서드를 활용하는 방법
기존의 단점들을 개선한 java.time패키지(JDK1.8)
Calendar는 추상클래스이기 때문에 직접 객체를 생성할 수 없고, 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 한다.
Calendar cal = Calendar.getInstance();
getInstance() 는 태국을 제외하고 그레고리력에 맞게 구현된 인스턴스를 반환받을수 있다.
import java.awt.*;
import java.util.Calendar;
import java.util.Date;
public class GetTime {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());
System.out.println(new Date());
System.out.println(Calendar.getInstance().getTime());
}
}
1578638707421
Sun Nov 27 15:45:07 KST 2022
Sun Nov 27 15:45:07 KST 2022
currentTimeMillis()는 timestamp를 반환해주고 나머지는 실제 날짜, 시간을 반환해준다.
결론적으로는 System.currentTimeMillis() 가 가장 빠르고 new Date()가 그 뒤를 따르지만 사실 이 둘은 같다고 해도 무방할 듯 하다.
눈여겨 볼 점은 Calendar.getInstance().getTime()는 객체 생성부터 시작하여 여러 상황을 고려한 (윤달 등등) 날을 계산하기에 많은 시간이 걸리는 듯 하다.
System.currentTimeMillis() >= new Date() >>> Calendar.getInstance().getTime()
System.currentTimeMillis()는 객체를 만들지 않기 때문에 분명히 가장 효율적이지만
new Date() 객체 생성을 하지만 많은 과정이 없기에 System.currentTimeMillis()와 비슷한 성능을 낸다.
하지만 결국 Date는 객체 생성을 하기에 성능을 따지자면 GC를 하지 않는 System.currentTimeMillis()가 더 나아 보인다.
반면, 캘린더는 날짜와 시간에 고유 한 상당히 복잡한 모든 기이 (윤년, 일광 절약 시간, 시간대 등)를 처리해야하기 때문에 상대적으로 느리고 매우 복잡하다.
'ALL > Java' 카테고리의 다른 글
Memory Analyzer(MAT) 툴 이용 Heap Dump 분석 (0) | 2023.11.29 |
---|---|
[Java] Socket 소켓통신 / Endian(빅엔디안, 리틀엔디안) (1) | 2023.11.27 |
[Java] Thread (0) | 2023.11.27 |
- Total
- Today
- Yesterday
- 리액트
- 코드로 배우는 스프링 웹 프로젝트
- node
- security
- 자바스크립트
- 스프링의정석
- 데브캠프
- 데이터베이스
- spring
- AWS
- 한입크기로 잘라먹는 리액트
- EC2
- 시큐리티
- Node.js
- 스프링 프로젝트
- 남궁성
- 자바의정석
- 인덱스
- 친절한SQL튜닝
- 컨테이너
- 스프링
- 이정환
- 객체지향
- React
- 스프링 빈
- di
- MySQL
- @Configuration
- Spark
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |