• ベストアンサー

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

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

  • Java
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • 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

  • 作成プログラムの処理速度を測定したいのですが、

    作成プログラムの処理速度を測定したいのですが、 測定ソフトや容易な方法をご存知の方、ご教授おねがいします。 測定対象プログラム  開発環境:VisualStudio2008          .NET Framework 3.5 開発言語: C++/CLI   測定したい項目  実行されたメソッドとその処理時間

  • CPU時間の測定

    任意のJavaアプリケーション内の特定の処理での実行時に消費したCPU時間を,そのJavaアプリケーション内部で測定するにはどのようにしたらよいのでしょうか(開始時と終了時の currentTimeMillis() の差分は実時間なので該当せず.アプリケーション起動時にシェルでtimeコマンドを呼ぶのも,外部からの測定であり,また,アプリケーション全体の測定になるので該当せず).C/C++ では clock() の差分で測定していたのですが Javaでの方法がわかりません.OSはLinuxです.

    • ベストアンサー
    • Java
  • BMI測定を作ろうとしているのですが…

    初めまして! 最近Javaを勉強し始めてみたのですが行き詰ってしまったので質問失礼します。 今GUI(?)で『BMI測定』作ろうとしています。 デザインは下記のようにしてみました。 http://www.geocities.jp/inot90/bmi.JPG 身長のラベル名が『sinlabel』 体重のラベル名が『tailabel』 BMI値のラベル名が『BMIti』です。 体重と身長のラベルに数字を打ち込み『測定スタート』ボタンを押してBMI値のラベルに数値を表示させたいのですが『測定スタート』を押してどう表示させるかがわかりません。 BMIの計算式は[体重]/([身長]*[身長])です。 解説と答えのプログラムを教えて頂けないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • UDPを使って帯域測定プログラムを作りたいのですが

    Java eclipse3.5を使っています。 UDP通信を使って帯域測定プログラムを作りたいと思っています。 動作の流れは、 1.クライアント側で送信データ(1MB,5MB,10MBのバイト)を作成し、それをサーバに送信する。 2.サーバ側では、送られた各データを受け取る(読み取る?)時間をそれぞれ計測し、計測時間をクライアント側に送信する。 3.クライアント側で、送信データ÷計測時間で通信速度を計算する。 4.それを表示する。 という感じにしたいと考えています。 頭では、こうしたいという構造はあるのですが、プログラムを書くとなると、どう書けばよいか分かりません。 どなたか、アドバイスをいただけないでしょうか?

    • ベストアンサー
    • Java
  • UDPで受信スループットを測定

    Javaを使って通信のプログラムを勉強しています。 UDP通信のスループットを測定するプログラムを作成しています。 送信側で5242880バイトを128回に分割して送信して、 受信側でそれらのパケットを受信する時間を計測するプログラムを 作りたいのですが、受信側でどのタイミングで受信処理を止めるのかがわかりません。 start = System.currentTimeMillis(); for(;;){   socket.receive(RecvPacket);   if(ループを抜ける条件)     break; } stop = System.currentTimeMillis(); で受信し続けて、受信するパケットがなくなったらループを抜けるというように考えました。 UDPでは送信されたパケットがすべて届くという保証はないので、 128回受信したらループを抜けるというようにできないので、困っています。 届いたパケットの数も数えて到達率も計算したいです。 受信が終わったら、ループを抜けるというようにしたいのですが、 どうすればよいでしょうか?

    • ベストアンサー
    • Java
  • 長時間かかるPHPプログラムの処理方法。

    長時間かかるPHPプログラムの処理方法。 PHPプログラムを作成したのですが、処理が終わるまでおそらく数時間掛るようなプログラムを作成しました… 普通にURLにアクセスしても途中でストップしてしまいます。 シェルスクリプトをかまして、CRONジョブで処理したら、サーバーの条件によって途中で止まってしまいます。 サーバーはXREAを使用しています。CRONジョブは3分以上の処理はダメなようです。 長時間のプログラムを処理する方法はあるのでしょうか? 専用サーバーを使う必要があるなら、そういった事が可能でサービス的に良いところを教えてくれると助かります。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • Dojaでの時間測定

    こんばんわ、今Dojaでプログラミングを試みているのですが解らない部分があるので教えて下さい。 キーリリースのイベントが発生する毎にその瞬間の時間を測定したいのですが、getShortTimerメソッドを使い処理を行えばいいというところまでは解ったのですが本にあまり詳しく説明が無いので使い方や参考になるURLなどがございましたら教えて下さいよろしくお願いします。

    • ベストアンサー
    • Java
  • アプリケーションソフトの処理時間について

    こんにちは。 XP上で数値計算をやっています。同一のプログラムの実行にも関わらず、計算させる度に処理時間にばらつきがあって、通常4時間程度かかる処理が4日もかかったりすることがあります。入力データの量もほとんど変わらず、基本的に全く同じ計算の繰り返しです。 自分の推測ですが、Windowsのアプリケーションに対する設定が悪さしてるのでは、と思ってます。 長時間の数値計算を実行させるとき、計算に影響が出るようなOSの要素として、どのようなものが考えられるでしょうか? なお、アプリケーションはmatlabで、スクリーンセーバーは切っています。 よろしくお願いします

  • 24時間後に処理

    とあるサイトで、24時間後に処理を実行できるプログラムは実現可能でしょうか? 24時間なので当然ブラウザを開いた状態ではなく、閉じても24時間後に処理が実行される仕組みはないでしょうか。

  • 計算時間の測定

    計算時間の測定の精度を高くしたいのですが、誰か教えてください。 単位はμsはほしいです。言語はCかMathematicaでお願いします。 ちなみにOSはWinXPです。

専門家に質問してみよう