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

[jfriends-ml 13056] Re: 「 Effective Java (第 2 版)」を読む会第 7 回議事録



小棚木です。

空白が消えているようなので、再送します。

Item66の宿題ですが、いろいろなケースで試してしました。
同期メソッドは環境によって大きく異なる結果になりました。

(9)以外はデュアルコア、(9)のみシングルコア環境です。
スレッド数は4で、すべて同一のバイナリを使用しています。
(ただし、(1),(2)はJDK5でコンパイル。)

1. JDK5とJDK6の比較 (1)〜(3)
⇒ JDK 5では同期メソッドは非常に遅い

2. 同一マシンでいろいろなOSで比較 (3)〜(7)
XP(32bit)、Linux(64bit)、Solaris(64bit)

3. 64bit環境で32bit JDKと64bit JDKも比較 (4)/(5), (6)/(7)

4. Intel CPUについても計測 (8), (9)

----------------------------------------------------
(1)-(7)は同一マシン(トリプルブート環境)で計測
CPU: AMD Athlon 64X2 DualCore Processor 3800+
Memory: 3GB

(1) XP-AMD-JDK5
OS: Microsoft Windows XP Professional SP3(32bit)
Java: JDK 1.5.0_17(32bit)
                   |      (1)      |      (2)      |      (3)
-------------------+---------------+---------------+---------------
不完全             |   249,068,841 |   253,785,013 |   418,195,853
同期メソッド       |17,097,588,102 |15,766,089,021 |16,522,166,120
アトミック整数     |   361,472,967 |   423,660,898 | 2,310,423,636

(2) (1)のバイナリをJDK6で実行
OS: Microsoft Windows XP Professional SP3(32bit)
Java: JDK 1.5.0_17(32bit) → JDK 1.6 Update12(32bit)
                   |      (1)      |      (2)      |      (3)
-------------------+---------------+---------------+---------------
不完全             |   255,303,048 |   247,908,428 |   422,535,965
同期メソッド       |   258,808,382 | 1,979,800,820 | 2,279,985,445
アトミック整数     |   374,851,063 |   387,568,357 | 2,238,311,992

(3) XP-AMD-JDK6
OS: Microsoft Windows XP Professional SP3(32bit)
Java: JDK 1.6 Update12(32bit)
                   |      (1)      |      (2)      |      (3)
-------------------+---------------+---------------+---------------
不完全             |   259,404,827 |   257,981,182 |   423,133,841
同期メソッド       |   266,893,732 | 1,920,549,888 | 2,163,707,678
アトミック整数     |   383,222,135 |   392,439,158 | 2,265,356,316

(4) Linux(x64) - 32bit JDK
OS: CentOS 5.2 x64版
Java: JDK 1.6 Update12(32bit)
                   |      (1)      |      (2)      |      (3)
-------------------+---------------+---------------+---------------
不完全             |   347,461,750 |   246,858,750 |   470,681,750
同期メソッド       |   271,786,000 | 2,407,350,375 | 2,327,043,125
アトミック整数     |   363,006,250 |   290,814,250 | 2,158,710,000

(5) Linux(x64) - 64bit JDK
OS: CentOS 5.2 x64版
Java: JDK 1.6 Update12(64bit) (-clientは無効)
                   |      (1)      |      (2)      |      (3)
-------------------+---------------+---------------+---------------
不完全             |   372,804,750 |       -       |   462,736,500
同期メソッド       |   172,153,500 |       -       | 3,326,747,250
アトミック整数     |   288,579,750 |       -       | 2,043,495,875

(6) Solaris(x64) - 32bit JDK
OS: OpenSolaris 2008/11 x64版
Java: JDK 1.6 Update12(32bit)
                   |      (1)      |      (2)      |      (3)
-------------------+---------------+---------------+---------------
不完全             |   286,391,302 |   230,507,597 |   427,017,163
同期メソッド       | 1,016,705,368 | 3,193,659,453 | 2,535,042,058
アトミック整数     |   448,602,353 |   355,839,276 | 2,169,151,241


(7) Solaris(x64) - 64bit JDK
OS: OpenSolaris 2008/11 x64版
Java: JDK 1.6 Update12(64bit) -d64オプション (-clientは無効)
                   |      (1)      |      (2)      |      (3)
-------------------+---------------+---------------+---------------
不完全             |   281,332,712 |       -       |   595,892,287
同期メソッド       |   239,740,008 |       -       | 2,428,330,518
アトミック整数     |   376,946,542 |       -       | 2,573,738,053

(8) XP - Core2Duo
CPU: Intel Core2Duo U7600 1.20GHz
Memory: 2GB
OS: Microsoft Windows XP Professional SP3(32bit)
Java: JDK 1.6 Update12(32bit)
                   |      (1)      |      (2)      |      (3)
-------------------+---------------+---------------+---------------
不完全             |   154,971,058 |   150,828,702 |   331,595,845
同期メソッド       | 1,402,734,566 | 1,581,981,090 | 1,766,773,012
アトミック整数     |   356,669,877 |   349,995,216 | 1,844,921,666

(9) Linux - Pentium4 シングルコア
CPU: Intel(R) Pentium(R) 4 630(3GHz)
Memory: 1GB
OS: FedoreCore5
Java: JDK 1.6 Update12(32bit)
                   |      (1)      |      (2)      |      (3)
-------------------+---------------+---------------+---------------
不完全             |    74,491,250 |    43,770,625 |   360,724,125
同期メソッド       |   124,694,500 |   508,333,250 |   972,829,625
アトミック整数     |    46,542,125 |    68,119,375 | 1,696,146,750
※ シングルコア環境については「不完全」でも80%程度(23/30)は
正常終了(カウント=4,000,000)した。