• ベストアンサー

マイクロ秒を取得するクラス

java eclipse3.5を使って帯域測定のプログラムを作っています。 現在の時間のミリ秒を次のように取得しています。 long Ms = System.currentTimeMillis() もっと細かく測定したいので、マイクロ秒を取得しようと考えています。 どのクラスを使えばよいでしょうか? 分かる方、アドバイスお願いします。

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

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

  • ベストアンサー
  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

long micro = System.nanoTime()/1000; ナノ秒の1000分の一は、マイクロ秒のような気がしますが。 これで駄目ですか???

debukawa
質問者

お礼

みなさん、回答ありがとうございます。 System.nanoTime()を調べてみたら このメソッドは、経過時間を測定するためだけに使用できる ということでしたので、このメソッドを使用しました。 sunのクラスの説明が書かれたサイトに計測のソースがのっていました。 long startTime = System.nanoTime(); // ... the code being measured ... long estimatedTime = System.nanoTime() - startTime; これを使うことで、マイクロ秒単位での計測ができたと思います。 アドバイスありがとうございました。

その他の回答 (1)

回答No.1

http://www.javainthebox.net/laboratory/J2SE1.5/MiscAPI/ConcurrencyUtils/ConcurrencyUtils3.html 試してはいませんが、このあたりが参考になるかと。 「java マイクロ秒 取得」 その他の情報については上記キーワードで検索すれば ほしい情報が見つかると思います。

関連するQ&A

  • マイクロ秒をはかる

    Linuxではそういう関数があるようなのですが Windowsでマイクロ秒を測定することは無理なのでしょうか? (ミリ秒のはかり方は調べたら出てきました。) よろしくお願いします。

  • 帯域測定プログラムに関する質問

    eclipse3.5を使ってプログラムを作っています。 TCPとUDPの2種類で帯域測定プログラムを作りたいのです。 構成としては、送信するバイトと、測定開始時間を指定したら、 自動的に指定した時間に指定したバイトを送信し、帯域測定を 行うプログラムを作りたいのです。 プログラムの引数として、IPアドレス、ポート番号、バイト量、開始時間 というようにしています。 バイトを指定することは簡単にできたのですが、計測時間は、どう指定 すればよいか分かりません。表記の仕方が分かりません。 Ms=System.currentTimeMillis(); System.out.println(Ms); で現在の時間の表記の仕方を確認しても、私にはでたらめな数値にしか見えず、 これでは指定時間を入力することができません。 どなたか、どうやれば指定した時間に測定を開始することができるか わかりませんか?アドバイスお願いします。

    • ベストアンサー
    • Java
  • スピードの差

    次のプログラムは userData[0] → userData[1] userData[1] → userData[2] ・・・ ・・・ userData[num-2] → userData[num-1] のように、データを移動するプログラムである。 //■開始時間取得 start = System.currentTimeMillis(); //■移動 for(int i=num-2; i>=0; i--) { userData[i+1] = new UserData(userData[i].name,userData[i].dataPointer); } //■終了時間取得 end = System.currentTimeMillis(); System.out.println("時間:"+(end-start)+"ミリ秒"); numと実行時間はつぎのようになった。 (NetBeans6.0で実行) num 1回目 2回目 3回目 8196 0ms 0ms 0ms 16384 7ms 7ms 7ms 32768 9ms 9ms 8ms 65536 7ms 8ms 14ms 131072 21ms 21ms 24ms 262144 198ms 353ms 212ms 524288 90ms 92ms 91ms このときnum=524288よりnum=262144としたときの方が遅い原因と して何が考えられますか? また、num=1048576としたところ Java Result: 1 となった。実行するにはNetBeansの設定をどのように変えたらよいか?

  • ミリ秒を取得するには

    プログラムのレスポンスを計る為にミリ秒を取得のですが どうしても秒単位でしか取得できません。 何かいい方法はないでようか。

  • Javaについて、時間比較で処理をbreakしたいのですが、次のように

    Javaについて、時間比較で処理をbreakしたいのですが、次のように作ってみたのですが、endが解決できません。なにか手立てはないでしょうか? do {  //何か実行する。  long end = System.currentTimeMillis(); }while((end-start)<=60);

    • ベストアンサー
    • Java
  • calendarクラスの使い方について

    時間データ(h:mm:ss)のみの差を求める場合に calendarクラスを利用しましたが 20時32分50秒というデータを cal.get(20,32,50)と記述して以下の プログラムを実行しても ---------結果 差:4838400 となりうまくいきません。 型があってないので、当然といえば当然かもしれませんが・・・ 本当は時刻、分、秒だけのデータで 差:115 と計算し表示させたいのです。 どうやったら、 2004,5,16,20,32,50 ではなく、 20,32,50の情報だけで時間と時間の差を 取得できるでしょうか 他の方法が思いつきませんので どなたかご存知であれば教えてください。 よろしくお願いします ---------プログラムリスト import java.util.Calendar; import java.util.Date; public class TestDate{ public static void main(String[] args){ Calendar cal1 = Calendar.getInstance(); cal1.set(2004,5,16,20,32,50); Date dat = cal1.getTime(); long date1 = dat.getTime(); Calendar cal2 = Calendar.getInstance(); cal2.set(2004,5,16,20,34,45); long date2 = cal2.getTime().getTime(); long distance = (date2 - date1) / (1000); System.out.println("差:"+distance); } } -----------------------------------------

    • ベストアンサー
    • Java
  • 処理速度

    プログラムの処理の速度について聞かせてください。 /*SpeedTest*/ import java.io.*; public class SpeedTest{ public static String St(){ String fname = "hello.txt"; try{ BufferedReader br = new BufferedReader(new FileReader(fname)); String str = br.readLine(); }catch (Exception e){ e.printStackTrace(); } return ""; } public static void main(String[] args){ long s = System.currentTimeMillis(); for(int t = 0; t < 50; t++){ SpeedTest.St(); } long g = System.currentTimeMillis(); System.out.println(( g - s ) + " ms." ); } } のプログラムを、コマンドプロンプトで実行すると、「900 ms」なのに対して、JBuilderでは、「100 ms」です。 もちろん、同じマシン上で、J2SDKも同じ、1.4.0です。 なぜ、これほどに処理が違ってくるのでしょうか・・? 環境は、win2kです。 JVM関係なのでしょうか?

    • ベストアンサー
    • Java
  • 時間(ミリ秒を含む)の引き算

    現在、VB6でAPI関数timeGetTimeを使って処理時間を測定する プログラムを作成しています。 ミリ秒まで取得・表示しているのですが、ミリ秒を含む時間の引き算方法がわかりません。 以下のような引き算を行い、処理開始・終了時間と経過時間を表示させたいです。 例) 15:13:59.054(終了時間)-15:12:57.112(開始時間) =99:99:99.999(経過時間) どなたか教えて頂けないでしょうか。 宜しくお願い致します。

  • ミリ秒を○時間○分○秒にしたい

    http://www.excellenceweb.net/vba/api/what_windows_api.html のページを参考にPC起動時間を取得したいのですが サンプルは単位がミリ秒になっています。 -------------------------------------------------- Declare Function GetTickCount Lib "kernel32.dll" () As Long Sub TEST1() Dim Tickcount As Long 'GetTickCount関数から、起動からの時間が返される Tickcount = GetTickCount() MsgBox "PC起動から " & Tickcount & " ミリ秒経過しています" End Sub -------------------------------------------------- ○時間○分○秒にしたいのですが どうすればいいでしょうか? Formatを使うと思うのですが どういうコードを書けばいいのかわかりません。 ご教授よろしくお願いします。

  • Windowsの時刻について

    私はプログラムの初心者です。 Windowsの正確な時刻をミリ秒レベルで取得するために”GetLocalTime”で取得しようと考えていたのですが、マイクロソフトのmsdnに システムが時刻を生成するのは毎秒 18 回です。したがって、Interval プロパティはミリ秒単位で設定されますが、間隔の真の精度は最大で 18 分の 1 秒です。 との記述があります。 上記であれば、約55.5ミリ秒毎にシステムの時刻を作成しているので、OSはどのようにして”GetLocalTime”で取得できるミリ秒の時間を作成しているのでしょうか。 実際に”GetLocalTime”で取得できるミリ秒での時刻の精度はどれ位なのでしょうか。 ”GetLocalTime”以外にOSの正確な時刻を取得する方法はあるのでしょうか。 宜しくお願い致します。