IT이야기

System.currentTimeMillis() vs. 새로운 날짜() vs.Calendar.getInstance().getTime()

cyworld 2022. 6. 12. 12:10
반응형

System.currentTimeMillis() vs. 새로운 날짜() vs.Calendar.getInstance().getTime()

Java에서 사용하는 퍼포먼스와 자원에 대한 영향은 무엇입니까?

System.currentTimeMillis() 

대.

new Date() 

대.

Calendar.getInstance().getTime()

제가 알기로는System.currentTimeMillis()가장 효율적입니다.그러나 대부분의 응용 프로그램에서 이 긴 값을 날짜 또는 이와 유사한 개체로 변환해야 인간에게 의미 있는 작업을 수행할 수 있습니다.

System.currentTimeMillis()오브젝트를 생성하지도 않기 때문에 가장 효율적입니다만,new Date()정말 얇은 포장지에 불과하기 때문에 그리 뒤떨어지지 않습니다. Calendar한편, 은 비교적 느리고 매우 복잡합니다.이는 날짜 및 시간(예: 12월, 여름 시간, 시간대 등)에 따라 발생하는 매우 복잡한 모든 문제에 대처해야 하기 때문입니다.

일반적으로는 긴 타임스탬프 또는 긴 타임스탬프만 처리하는 것이 좋습니다.Date응용 프로그램 내의 오브젝트 및 사용만Calendar날짜/시간 계산을 실제로 수행해야 하는 경우 또는 사용자에게 표시할 날짜 형식을 지정합니다.많은 작업을 해야 한다면 Joda Time을 사용하는 것이 더 깨끗한 인터페이스와 더 나은 성능을 위해 좋은 생각일 것입니다.

JDK, 가장 안쪽 컨스트럭터:Calendar.getInstance()에는 다음이 있습니다.

public GregorianCalendar(TimeZone zone, Locale aLocale) {
    super(zone, aLocale);
    gdate = (BaseCalendar.Date) gcal.newCalendarDate(zone);
    setTimeInMillis(System.currentTimeMillis());
}

이미 제안하신 대로 자동으로 실행이 됩니다.Date 기본 생성자에는 다음이 포함됩니다.

public Date() {
    this(System.currentTimeMillis());
}

따라서 달력/날짜 개체를 만들기 전에 시스템 시간을 계산해야 하는 경우가 아니라면 시스템 시간을 특별히 얻을 필요가 없습니다.또한 날짜 계산을 많이 하는 경우 Java 자체 캘린더/날짜 클래스를 대체하기 위해 joda-time을 사용해야 합니다.

만약 당신이 날짜를 사용한다면, 나는 당신이 조다타임, http://joda-time.sourceforge.net/을 사용하는 것을 강력히 추천한다.사용.System.currentTimeMillis()날짜 필드에는 매우 좋지 않은 생각처럼 들립니다. 왜냐하면 결국 쓸모없는 코드가 많이 생기게 되니까요.

날짜와 달력이 모두 심각하게 엉망이 되어 있고, 캘린더는 확실히 그 중에서 가장 성능이 떨어진다.

를 사용하는 것이 좋습니다.System.currentTimeMillis()예를 들어 다음과 같이 실제로 밀리초 단위로 작업하는 경우

 long start = System.currentTimeMillis();
    .... do something ...
 long elapsed = System.currentTimeMillis() -start;

기계로 확인해보았습니다.결과:

Calendar.getInstance().getTime() = 402msnew Date().get Time(); (*1400회)= 18 msSystem.currentTimeMillis() (*14000회)= 16 ms

마세요(GC를 사용하는 Calendar.getInstance() ★★★★★★★★★★★★★★★★★」new Date())

하는 것이 .System.currentTimeMillis() "사용할 수 없습니다"만 사용합니다.Calendar ★★★★★★★★★★★★★★★★★」Date인간에 의해 읽히는 가치를 보여줄 필요가 있는지.도도99% :)

따라서는, 사용하시는 어플리케이션의 .System.nanoTime()★★★★★★ 。

이거 해봤어요.

        long now = System.currentTimeMillis();
        for (int i = 0; i < 10000000; i++) {
            new Date().getTime();
        }
        long result = System.currentTimeMillis() - now;

        System.out.println("Date(): " + result);

        now = System.currentTimeMillis();
        for (int i = 0; i < 10000000; i++) {
            System.currentTimeMillis();
        }
        result = System.currentTimeMillis() - now;

        System.out.println("currentTimeMillis(): " + result);

결과는 다음과 같습니다.

날짜(): 199

current Time Millis(): 3

System.currentTimeMillis()가비지 콜렉터가 필요 없는 메서드콜이1개뿐이기 때문에가 가장 빠릅니다.

언급URL : https://stackoverflow.com/questions/368094/system-currenttimemillis-vs-new-date-vs-calendar-getinstance-gettime

반응형