Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Calendarクラスで月末を取得する方法の速さ比較

JavaでCalendarクラスを使って月末を取得する2つの方法について速さを比較してみました。

実行環境は以下の通りです。

  • DELL VOSTRO 1540
  • Windows 10 Pro 32bit
  • Intel Celelron 2.00 GHZ
  • メモリ 2.0GB
  • HDは約300GB

月末を取得する方法は以下の2つです。

  • getActualMaximumメソッドを使用
  • 翌日初日-1を設定

ソースと実行結果

上記をそれぞれ30000回実行して時間を比較しました。以下、ソースと結果です。

ソース
package test;

import java.util.Calendar;
import java.util.function.IntSupplier;

public class Test {

    // --計測用--
    private void printProcessingTime(IntSupplier f) {
        int count = 30000;
        long start, end;
        start = System.currentTimeMillis();
        for (int i = 0; i < count; i++) {
            f.getAsInt();
        }
        end = System.currentTimeMillis();
        System.out.printf("出力確認:%s, 計測 %3d: ", f.getAsInt(), end - start);
        System.out.println();
    }

    // --計測--
    public static void main(String[] args) {
        new Test().test();
    }

    private void test() {
        // test1
        System.out.println("test1");
        printProcessingTime(() -> {
            Calendar c = Calendar.getInstance();
            c.clear();
            c.set(2016, 1, 1);
            return c.getActualMaximum(Calendar.DATE);
        });

        // test2
        System.out.println("test1");
        printProcessingTime(() -> {
            Calendar c = Calendar.getInstance();
            c.clear();
            c.set(2016, 2, 1);
            c.add(Calendar.DATE, -1);
            return c.get(Calendar.DATE);
        });
    }
}

以下、実行結果です。

結果
test1
出力確認:29, 計測 286: 
test1
出力確認:29, 計測 112: 

getActualMaximumメソッドの方が遅いという結果が出ました。

修正履歴

20161009

  • 文言修正。
  • ソースを修正し、java.util.functionを使用。
  • 出力結果も再実施。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?