• ベストアンサー

処理時間測定について質問があります。

今、javaで行列式の計算をするプログラムを作成しています。 この行列の計算には、非常に時間がかかるってところまではわかったのですが、処理時間(計算にかかる時間)をプログラムで測定するには、どんな手段をとればいいのかがわかりません。 javaは最近始めたばかりで、つまづくことが非常に多いです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • akira-h
  • ベストアンサー率80% (4/5)
回答No.1

あるメソッド(処理)の実行時間を調べるのに私は、Calendarクラス(下記URL参照)を使用しています。 処理(この場合、行列の計算です)の前にCalendarをインスタンス化して、処理が終わった後に別のCalendarクラスをインスタンス化する。CalendarクラスのgetTimeInMillis()メソッドを使用するとある時刻(エポックというらしいです・・・)からのミリ秒を返してくれるので、 そのメソッドを利用して『処理後Calendarオブジェクトから処理前Calendarオブジェクトを引けば』どのくらい時間がかかったかわかりますよね。 以下、javaソース風にするとこんな感じです。 -------------------------------------------------- //Calenderクラスのインスタンス化(処理前) Calendar before_time = Calendar.getInstance(); //処理(行列の計算) ~ ~ ~ ~ //Calenderクラスのインスタンス化(処理後) Calendar after_time = Calendar.getInstance(); //かかった時間の表示 System.out.println( after_time.getTimeInMillis() - before_time.getTimeInMillis() ); ※ここに表示さる時間はミリ秒なので注意! -------------------------------------------------- それでは、がんばってください。

参考URL:
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/Calendar.html
jin_09
質問者

お礼

非常にわかりやすく、丁寧な回答をありがとうございます。また、お世話になることがあるかもしれませんので、その時はよろしくお願いします。がんばります!

その他の回答 (1)

noname#16216
noname#16216
回答No.2

No.1 で akira-hさんが記述されている方法で十分だと思いますが。。。 個人的には、 System.currentTimeMillis(); を使っています。 システム(Javaが動いている環境)の現在時刻をミリ秒で返却するための 関数です。 Calendarクラスを使った場合、Calendarオブジェクトを生成するための 時間も0ではないはずなので、そういった意味でより正確に処理時間が 測定できるはずです。

jin_09
質問者

お礼

応用的な回答をしていただき、ありがとうございます。まだ未知の領域が非常に多いので、本当に参考になります。またお世話になることがあるかもしれませんが、その時はよろしくお願いします。

関連するQ&A