[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 13057] Re: 「 Effective Java (第 2 版)」を読む会第 7 回議事録
こんばんわ。高橋(智)です。SPARC x 2個 で試してみました。以下の結果です。
○計測環境
Ultra SPARC 60
CPU: UltraSPARC IIs 450MHz x 2個
Memory: 2GBx2
OS: Solaris 10 SPARC (64bit)
Java: JDK1.5 Update6(64bit ServerVM) および JDK1.6 Update12(64bit ServerVM)
以下、いずれも 4-thread で試しました。
一昔前のSPARCが2個ですが、JDK1.5でもJDK1.6でも、アトミックの成績は同期にくらべて
断然良いですね。
○計測結果 - JDK1.5 Update6(64bit ServerVM)
| (1) | (2) | (3)
-------------------+---------------+---------------+---------------
不完全 | 315,870,411 | 326,358,603 | 2,738,733,917
同期メソッド |11,935,661,172 |11,809,277,998 |16,279,088,530
アトミック整数 | 747,171,398 | 739,864,605 |15,739,420,687
○計測結果 - JDK1.6 Update12(64bit ServerVM)
| (1) | (2) | (3)
-------------------+---------------+---------------+---------------
不完全 | 431,377,819 | 424,611,386 | 3,051,215,986
同期メソッド | 3,035,941,455 | 3,054,111,441 | 11,434,852,019
アトミック整数 | 562,006,697 | 606,359,384 | 15,086,171,771
--
高橋智宏
ODANAGI Akinao wrote:
>
> 小棚木です。
>
> 空白が消えているようなので、再送します。
>
> 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)した。