Java > DateクラスとCalendarクラスの性能
更新日
2012-05-04
広告
DateクラスとCalendarクラスは、どちらも、現在時刻を取得する目的で利用できます。エポック時刻からの時間差を取得するだけであれば、System.currentTimeMillis()を利用することも可能です。この3つの方法にかかる時間を比較します。
環境
- OS: Ubuntu 11.04
- CPU: Intel Core 2 Duo
- Java VM: 1.6.0_22 (OpenJDK Runtime Environment IcedTea6 1.10.6)
結果
評価結果は以下のようになりました。評価対象 | かかった時間(ミリ秒) |
---|---|
Calendar | 1007.0 |
Date | 616.2 |
System.currentTimeMillis | 616.3 |
- Calendarクラスの生成は、それほど遅くない。
- Dateクラスの生成と、System.currentTimeMillisの実行は、ほぼ同じ(意外!)。
評価プログラム
評価には、以下のプログラムを利用しました。import java.util.Calendar; import java.util.Date; public class DateVsCalendar { private static final int LOOP = 1000000; public static void main(String[] args) { long s = 0; long f = 0; loopDate(); s = System.nanoTime(); loopDate(); f = System.nanoTime(); System.out.println("loop date " + (f - s) + " nano sec"); loopCalendar(); s = System.nanoTime(); loopCalendar(); f = System.nanoTime(); System.out.println("loop calendar " + (f - s) + " nano sec"); loopCurrentTimeMillis(); s = System.nanoTime(); loopCurrentTimeMillis(); f = System.nanoTime(); System.out.println("loop current " + (f - s) + " nano sec"); } private static void loopDate() { for (int i = 0; i < LOOP; i++) { Date date = new Date(); } } private static void loopCalendar() { for (int i = 0; i < LOOP; i++) { Calendar cal = Calendar.getInstance(); } } private static void loopCurrentTimeMillis() { for (int i = 0; i < LOOP; i++) { long current = System.currentTimeMillis(); } } }
広告
お問い合わせは sweng.tips@gmail.com まで。