[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12601] Re: 「 JAVA CONCURRENCY IN PRACTICE 」を読 む会第7回議事録



高橋(徹)です。

   ""TAKAHASHI, Tomohiro" <t_takahashi@xxxxxxxxxxxxxx>"さんは書きました:
> P253 [宿題]perfbarを使用した感想を必ずレポートしてください。
http://gee.cs.oswego.edu/dl/code/
から、gtk_perfbar.zipをダウンロード。
x86 linux用バイナリとSPARC Solaris用バイナリが含まれています。
残念ながらx86 Solaris用はないので唯一のソースファイルperfbar.cを
添付のMakefileでmakeして実行しました。

うーん、非常にシンプルなCPU使用率を示すゲージのGUIプログラムです。
イメージはこんな感じ。ユーザ時間・システム時間・アイドル時間の割合
を色で示すものです。
+--+
|□| 
|□|
|□|
|■|
|■|
|■|
+--+

> p302 System.nanoTime()…実行にマイクロ秒程度しかかからない。相対時間を使用。

Windows/Solaris/LinuxでのSystem.nanoTime()実行時間計測結果
(1) WindowsXP CPU:Athlon 64x2 4200+(2.2GHz)
    平均 1.8μ秒
(2) Solaris10 x86 CPU:Athlon XP 2500+(1.8GHz)
  平均 0.39μ秒
(3) CentOS 4.4 x86 CPU:Pentium3 (500MHz)
  平均 3.5μ秒

なお、nanoTime()の実装は、WindowsではQueryPerformanceCounter()、
Solarisではgethrtime()、Linuxではclock_gettime(CLOCK_MONOTONIC,...)
となっています。

> MySQLがOSによって時間関連のメソッドで処理時間が違う。速度と時間精度のトレードオフがある。
> 絶対時間のほうが処理が重くなる。
> System.currentTimeMillis()は絶対時間を使用するので処理が重い。
同様に
(1) 平均 2.0μ秒
(2) 平均 1.1μ秒
(3) 平均 9.3μ秒

Solaris/Linuxでは、currentTimeMillisはnanoTimeの3倍位遅いですが、
Windowsではあまり差はないようです。

なお、currentTimeMillis()の実装は、WindowsではGetSystemTimeAsFileTime()、
Solaris/Linuxではgettimeofday()となります。


--
TAKAHASHI,Toru
torutk@xxxxxxxxxxxx