W krótkiej odpowiedzi, System.currentTimeMillis()
jest szybszy.
@Test
public void testSystemCurrentTime() {
final Stopwatch stopwatch = Stopwatch.createStarted();
for (int i = 0; i < 1_00_000; i++) {
System.currentTimeMillis();
}
stopwatch.stop();
System.out.println("System.currentTimeMillis(): " + stopwatch);
}
@Test
public void testDateTime() {
final Stopwatch stopwatch = Stopwatch.createStarted();
for (int i = 0; i < 1_00_000; i++) {
(new Date()).getTime();
}
stopwatch.stop();
System.out.println("(new Date()).getTime(): " + stopwatch);
}
@Test
public void testCalendarTime() {
final Stopwatch stopwatch = Stopwatch.createStarted();
for (int i = 0; i < 1_00_000; i++) {
Calendar.getInstance().getTimeInMillis();
}
stopwatch.stop();
System.out.println("Calendar.getInstance().getTimeInMillis(): " + stopwatch);
}
Pobiegłem powyżej przypadków testowych i znalazłem następujący wynik:
System.currentTimeMillis(): 5.208 ms (new Date()).getTime(): 19.57 ms Calendar.getInstance().getTimeInMillis(): 148.2 ms
System.currentTimeMillis(): 4.685 ms (new Date()).getTime(): 11.53 ms Calendar.getInstance().getTimeInMillis(): 122.6 ms
System.currentTimeMillis(): 4.734 ms (new Date()).getTime(): 11.66 ms Calendar.getInstance().getTimeInMillis(): 131.5 ms
System.currentTimeMillis(): 4.018 ms (new Date()).getTime(): 19.33 ms Calendar.getInstance().getTimeInMillis(): 127.6 ms
System.currentTimeMillis(): 5.474 ms (new Date()).getTime(): 16.74 ms Calendar.getInstance().getTimeInMillis(): 113.6 ms
System.currentTimeMillis(): 3.871 ms (new Date()).getTime(): 14.46 ms Calendar.getInstance().getTimeInMillis(): 120.5 ms
System.currentTimeMillis(): 8.223 ms (new Date()).getTime(): 11.65 ms Calendar.getInstance().getTimeInMillis(): 173.8 ms
System.currentTimeMillis(): 4.611 ms (new Date()).getTime(): 9.978 ms Calendar.getInstance().getTimeInMillis(): 117.9 ms
System.currentTimeMillis(): 3.794 ms (new Date()).getTime(): 11.33 ms Calendar.getInstance().getTimeInMillis(): 89.79 ms
System.currentTimeMillis(): 4.298 ms (new Date()).getTime(): 12.37 ms Calendar.getInstance().getTimeInMillis(): 123.8 ms
Mam nadzieję, że to pomoże.
gdzie używasz czasu millis z DelayQueue? – Bozho
Nie było jasne, używam tylko w klasie implementującej interfejs opóźniony w metodzie 'getDelay()'. –
@Renato, Calendar.getInstance() i nowa Date() używają System.currentTimeMillis() jednak Kalendarz jest zdecydowanie najwolniejszy. –