(プログラムネタ) マルチスレッドプログラム2
2009年07月06日17:58
java.util.concurrent の ReentrantLock と 組み込みの synchronization とどちらが性能が高いのか、調べてみた。
http://blogs.sun.com/dave/entry/java_util_concurrent_reentrantlock_vs
http://www.ibm.com/developerworks/java/library/j-jtp10185/index.html
上記によると組み込み式の方が性能が高いようだ。 JVM 組み込みの synchronization には Lock Elision とか Lock Coarsening というとんでもない最適化のテクが組み込まれていて、JVMが クラスファイルを ネイティブコードにコンパイルするときに 不要なロックを取り除いたり、状況に応じてコストの低いロックに切り替えたりするのだそうだ。
これは画期的で驚異的に高度な技術だと思う。 すばらしい。
JVMは他にも画期的な技術がたくさん組み込まれている。 知れば知るほどとりこになるような面白くて画期的な技術が組み込まれている。
Javaには、この一点の輝きがある。 だからこそ、いかに不満があっても手放そうと思わない。
しかし、いつも思うけど Javaって、どうもムラがある。 このようにある部分は信じられないほど高性能なのに、ある部分は信じられないほどバカでマヌケで設計になっていたりする。
一般的に JVM関連の技術は 天衣無縫といっていいほど高度な設計技法が組み込まれている。 java.lang パッケージ java.util パッケージ 配下のクラスはとてもよく考えられていて使いやすいクラスが多い。
これがjavax パッケージになるとだんだんとおかしくなってくる。 Swing とか AWT とか Loggerとか 間抜け臭が漂う、きな臭いクラスが増えてくる。 J2EE になると、腐敗臭をプンプン漂わせた、もう見るのも触るのも嫌だ、というぐらい設計の悪いクラスのオンパレードになる。
Swingの設計者は万能バカ集団だ。
J2EEは巨大バカである。
JavaFXや NetBeans は バカではないが、ペテン師である。
このバカ集団のおかげで OSX版の Java6がいつまでたってもリリースされなかったり、 こんなにすばらしいJavaなのに、企業から見放されたりするのである。
http://blogs.sun.com/dave/entry/java_util_concurrent_reentrantlock_vs
http://www.ibm.com/developerworks/java/library/j-jtp10185/index.html
上記によると組み込み式の方が性能が高いようだ。 JVM 組み込みの synchronization には Lock Elision とか Lock Coarsening というとんでもない最適化のテクが組み込まれていて、JVMが クラスファイルを ネイティブコードにコンパイルするときに 不要なロックを取り除いたり、状況に応じてコストの低いロックに切り替えたりするのだそうだ。
これは画期的で驚異的に高度な技術だと思う。 すばらしい。
JVMは他にも画期的な技術がたくさん組み込まれている。 知れば知るほどとりこになるような面白くて画期的な技術が組み込まれている。
Javaには、この一点の輝きがある。 だからこそ、いかに不満があっても手放そうと思わない。
しかし、いつも思うけど Javaって、どうもムラがある。 このようにある部分は信じられないほど高性能なのに、ある部分は信じられないほどバカでマヌケで設計になっていたりする。
一般的に JVM関連の技術は 天衣無縫といっていいほど高度な設計技法が組み込まれている。 java.lang パッケージ java.util パッケージ 配下のクラスはとてもよく考えられていて使いやすいクラスが多い。
これがjavax パッケージになるとだんだんとおかしくなってくる。 Swing とか AWT とか Loggerとか 間抜け臭が漂う、きな臭いクラスが増えてくる。 J2EE になると、腐敗臭をプンプン漂わせた、もう見るのも触るのも嫌だ、というぐらい設計の悪いクラスのオンパレードになる。
Swingの設計者は万能バカ集団だ。
J2EEは巨大バカである。
JavaFXや NetBeans は バカではないが、ペテン師である。
このバカ集団のおかげで OSX版の Java6がいつまでたってもリリースされなかったり、 こんなにすばらしいJavaなのに、企業から見放されたりするのである。
コメント一覧
おかあつ 2009年07月06日 18:54
Starvation And Fairness
http://tutorials.jenkov.com/java-concurrency/starvation-and-fairness.html
http://tutorials.jenkov.com/java-concurrency/thread-signaling.html
Spurious Wakeup についてのメモ
http://stackoverflow.com/questions/1050592/do-spurious-wakeups-actually-happen
http://www.devguli.com/blog/eng/spurious-wakeup/
http://java.sun.com/javase/6/docs/api/java/lang/Object.html#wait%28long%29
http://tutorials.jenkov.com/java-concurrency/starvation-and-fairness.html
http://tutorials.jenkov.com/java-concurrency/thread-signaling.html
Spurious Wakeup についてのメモ
http://stackoverflow.com/questions/1050592/do-spurious-wakeups-actually-happen
http://www.devguli.com/blog/eng/spurious-wakeup/
http://java.sun.com/javase/6/docs/api/java/lang/Object.html#wait%28long%29