[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)した。