日本Reject会議2008の発表資料を公開します。
____
/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \
| |r┬-| | Ruby 1.9はクリスマス前にリリースします
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/ だっておwwwwwwww
| ノ | | | \ / ) /
ヽ / `ー'´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バンバン
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
+____
/⌒ ⌒\
/( ⌒) (⌒)\ +
/::::::⌒(__人__)⌒::::: \ いつリリースされるか分からない1.9よりも、
| |r┬-| | JRubyでエンタープライズRubyだお!
\ `ー'´ / +
,,.....イ.ヽヽ、___ ーーノ゙-、.
: | '; \_____ ノ.| ヽ i
| \/゙(__)\,| i |
> ヽ. ハ | ||
____
/⌒ ⌒\
/( ●) (●)\
/::::::⌒(__人__)⌒::::: \ さっそくベンチマークをとってみるお!
| |r┬-| |
\ `ー'´ /
____
/\ /\
/( ●) (●)\
/ :::::⌒(__人__)⌒:::::\ ruby-benchmark-suiteのbm_nbody.rbを3回実行し、
| |r┬-| | 一番良い値を採用するお!
\ ` ー'´ /
yaruo@vip% time ruby bm_nbody.rb 10000
1.04s user 0.02s system 96% cpu 1.107 total
yaruo@vip% time jruby bm_nbody.rb 10000
2.72s user 0.38s system 117% cpu 2.645 total
____
/ \
/ ─ ─\
/ (○) (○) \
| (__人__) | ________
\ ` ⌒´ ,/ .| | |
ノ \ | | |
/´ | | |
| l | | |
ヽ -一ー_~、⌒)^),-、 | |_________|
ヽ ____,ノγ⌒ヽ)ニニ- ̄ | | |
____
/⌒三 ⌒\
/( ○)三(○)\
/::::::⌒(__人__)⌒::::: \ JRubyの方が倍以上遅いお......
| |r┬-| |
\ `ー'´ /
____
/ \
/ _ノ ヽ、_ \
/ o゚⌒ ⌒゚o \ JRubyでエンタープライズなんて嘘だったんだお......
| (__人__) |
\ ` ⌒´ /
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) JRubyは最適化オプションを効かさないと
| ` ⌒´ノ 早くならないだろ、常識的に考えて......
. | }
. ヽ }
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
|
\ __ /
_ (m) _
|ミ|
/ `´ \
____
/⌒ ⌒\
/( ●) (●)\
/::::::⌒(__人__)⌒::::: \ JRubyに最適化オプションをつければいいんだお!!!
| |r┬-| |
\ `ー'´ /
____
/⌒ ⌒\
/( ●) (●)\ サーバVMをつかって実行時最適化を効かせるお!
/::::::⌒(__人__)⌒::::: \ JRubyは、-Jオプションでjavaにオプションを渡せるお!
| |r┬-| |
\ `ー'´ /
yaruo@vip% time jruby -J-server bm_nbody.rb 10000
2.57s user 0.37s system 116% cpu 2.520 total
____
/ \
/ ─ ─ \
/ (●) (●) \ あまり変わらないお......
| (__人__) |
\ ` ⌒´ /
____
/_ノ ヽ_\
/( ●) ( ●)\ jruby.compile.fastestオプションは
/ ::::::⌒(__人__)⌒:::::\ JITコンパイルでRubyには必要だけど
|  ̄ | Javaバイトコードに不要な処理をスキップするお......
\ /
yaruo@vip% time jruby -J-server -J-Djruby.compile.fastest=true bm_nbody.rb 10000
2.72s user 0.38s system 124% cpu 2.498 total
____
/ ノ( \
/ _ノ ヽ、_ \ こうなったら、バイトコードへの
/ ノ( ●━━● \ 実行時コンパイルを強制してみるしかないお......
| ⌒ (__人__) ノ( |
\ ` ⌒´ ⌒/
% time jruby -J-server -J-Djruby.compile.fastest=true -J-Djruby.compile.mode=FORCE bm_nbody.rb 10000
______
/ \ /\
/ し (>) (<)\
| ∪ (__人__) J | ________
\ u `⌒´ / | | |
ノ \ | | |
____
/ \ ─\ チラッ
/ し (>) (●)\
| ∪ (__人__) J | ________
\ u `⌒´ / | | |
ノ \ | | |
% time jruby -J-server -J-Djruby.compile.fastest=true -J-Djruby.compile.mode=FORCE bm_nbody.rb 10000
2.90s user 0.40s system 122% cpu 2.689 total
____
/::::::─三三─\
/:::::::: ( ○)三(○)\ おそくなってやがる!!
|::::::::::::::::::::(__人__):::: | ________
\::::::::: |r┬-| / | | |
ノ:::::::::::: `ー'´ \ | | |
ノ L____
⌒ \ / \
/ (○) (○)\
/ (__人__) \ バイトコードコンパイルなんて役に立たないお!!
| |::::::| |
\ l;;;;;;l /l!| !
/ `ー' \ |i
/ ヽ !l ヽi
( 丶- 、 しE |そ ドンッ!!
`ー、_ノ ∑ l、E ノ <
レY^V^ヽl
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) コンパイル時間を考えないと駄目だろ
| ` ⌒´ノ 常識的に考えて......
. | }
. ヽ }
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
____
/ノ ヽ、_\
/( ○)}liil{(○)\
/ (__人__) \ もうJRubyなんて捨てちまうお!!!
| ヽ |!!il|!|!l| / |
\ |ェェェェ| /
/ ̄ ̄\
/ノ( _ノ \
| ⌒(( ●)(●)
.| (__人__) /⌒l
| ` ⌒´ノ |`'''|
/ ⌒ヽ } | |
/ へ \ }__/ / / ̄ ̄\
/ / | ノ ノ / ●)) ((●\', ・
( _ ノ | \´ _ ( (_人_)'∴ ), '
| \_,, -‐ ''"  ̄ ゙̄''-----└'´ ̄`ヽ て
.| ______ ノ (
ヽ _,, -‐ ''" ノ ヽ r'" ̄
\ , '´ し/.. >>@ | J
\ ( / |
\ \ し- '^`-J
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) 試行回数を増やしてJVMの最適化が効いてくると
| ` ⌒´ノ JRubyの方が速いだろ、常識的に考えて......
. | }
. ヽ }
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
yaranaio@vip% time ruby bm_nbody.rb 50000
5.19s user 0.08s system 96% cpu 5.457 total
yaranaio@vip% time jruby -J-server bm_nbody.rb 50000
4.07s user 0.40s system 115% cpu 3.877 total
____
/⌒ ⌒\
/( >) (<)\
/::::::⌒(__人__)⌒::::: \ シシシシシシシシッ
| /| | | | | |
\ (、`ー―'´, /
 ̄ ̄ ̄
____
/⌒ ⌒\
/( ―) (―)\ JRubyはスレッド性能もいいから
/::::::⌒(__人__)⌒::::: \ マルチコア時代に最適だお!!
| |
\ /
____
/⌒ ⌒\
/( ●) (●)\ JRubyはネイティブスレッドの並列実行対応なのに
/::::::⌒(__人__)⌒::::: \ Ruby 1.8は、いまどきグリーンスレッドだお!
| |r┬-| |
\ `ー'´ /
. ... .
:____:
:/_ノ ー、\:
:/( ●) (●)。\:
:/:::::: r(__人__) 、::::\: ウッ・・・p...
:| { l/⌒ヽ |:
:\ / / /:
____
/-‐ ‐-\
/ ( ⌒) (● )\
/::::::⌒(__人__)⌒:::::\
| l/⌒ヽ | おっと、失礼したお
\ / / /
____
/⌒ ⌒\
/( ●) (●)\ さっそくバイトニックマージソートを
/::::::⌒(__人__)⌒::::: \ 並列実行でやってみるお!
| |r┬-| |
\ `ー'´ /
yaruo@vip% time ruby bitonic_sorting.rb
0.14s user 0.12s system 70% cpu 0.368 total
yaruo@vip% time jruby bitonic_sorting.rb
1.69s user 0.44s system 28% cpu 7.527 total
____
/ノ ヽ、_\
/( ○)}liil{(○)\
/ (__人__) \ 20倍くらい遅いお!!!
| ヽ |!!il|!|!l| / |
\ |ェェェェ| /
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) そういうときにはjruby.thread.pool.enabledオプションで
| ` ⌒´ノ スレッドプールをつかうだろ、常識的に考えて......
. | }
. ヽ }
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
____
/ \
/ _ノ ヽ、_ \
/ o゚((●)) ((●))゚o \ うっうっ......試してみるお......
| (__人__) |
\ ` ⌒´ /
% time jruby -J-Djruby.thread.pool.enabled=true bitonic_sorting.rb
1.80s user 0.45s system 38% cpu 5.828 total
____
/ \
/ _ノ ヽ、_ \
/ o゚⌒ ⌒゚o \ やっぱり、あんまり早くならないお......
| (__人__) |
\ ` ⌒´ /
._
\ヽ, ,、
`''|/ノ
.|
_ |
\`ヽ、|
\, V
`L,,_
|ヽ、) ,、
/ ヽYノ
/ r''ヽ、.|
| `ー-ヽ|ヮ
| `|
|. |
ヽ、 |
ヽ____ノ
/_ノ ' ヽ_\
/(≡) (≡)\
/::::::⌒(__人__)⌒::::: \
| |r┬-| |
\ `ー'´ /
/ \
( | | )
\| э |/
( ,,,, ,ノ
\ 、(U)ノ ノ
\/ / ┼ヽ -|r‐、. レ |
/ /\ d⌒) ./| _ノ __ノ
⊂⌒__)__)

コメントする