2017-02-04 3 views
0

JavaまたはPythonで関数のCPUサイクルを計算する方法を知りたいと思います。Java関数のCPUサイクルを計算する

私はJavaで試してみた:(OperatingSystemMXBean)ManagementFactory.getOperatingSystemMXBean()

。 osbean.getProcessCpuTime();

結果はありません。 Pythonで

+2

些細なことではありません。以下はJavaの出発点です:http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java – NPE

+0

何かをするのにかかる時間Javaは多くの要因によって異なります。同じ機能の実行には、何が実行され、どのように実行されるかに応じて、50ミリ秒かかるか、まったく時間がかかりません。 –

答えて

2

使用timeit.default_timer();それはあなたのプラットフォームのための最も正確なオプションを使用しています。 Ubuntuでは、代わりにtime.time()を使用します。

timeit.default_timer()プラットフォーム固有の方法で、デフォルトのタイマーを定義します。 Windowsの場合、time.clock()はマイクロ秒の細分性を持ちますが、time.time()の粒度は1/60thです。 Unixでは、time.clock()1/100thの第2の粒度を持ち、time.time()はずっと正確です。いずれのプラットフォームでも、default_timer()は、CPU時間ではなく壁時計の時間を測定します。つまり、同じコンピュータ上で実行されている他のプロセスがタイミングを妨げる可能性があります。 JAVAで

  1. System.currentTimeMillis()は今までwall-clock time、決してCPU時間を測定します。
  2. ウォールクロック時間が必要な場合は、がcurrentTimeMillis()より正確で(悪くならない)ことがよくあります。
  3. ThreadMXBean.getThreadCPUTime()は、特定のスレッドがどれくらいのCP​​U時間を使用しているかを知るのに役立ちます。興味のあるスレッドのidを見つけるには、ManagementFactory.getThreadMXBean()をThreadMXBeanに、Thread.getId()を使用してください。このメソッドは、すべてのJVMでサポートされる必要はありません。
関連する問題