Upload
demuyan
View
1.066
Download
0
Embed Size (px)
Citation preview
今さら聞けないRuby 1.9
Hokuriku.rb関係者 でむやん
2009年10月5日月曜日
アジェンダ
•Ruby 1.9とは
• Ruby 1.8との違い
• Ruby 1.8 → 1.9への移行方法
2009年10月5日月曜日
Ruby 1.9とは
•新しいRubyです
• 1.9.1リリースが2009年1月30日
•比較的最近ですね
2009年10月5日月曜日
何が違うの?
2009年10月5日月曜日
大きな変更点•Multilingualization
(M17N)
•YAVMの搭載
• Yet Another Virtual Machine
• 内部コンパイラが良くなったよ、て事
2009年10月5日月曜日
ナンバリング変更•今までは奇数が開発版、偶数が安定版
• Ruby 1.9.0は開発版
• Ruby 1.9.1以降は安定版
• Ruby 2.0は特別な意味を持つ
2009年10月5日月曜日
1.8との互換性
•100%互換ではない
•組み込みクラスで無くなったメソッドがある
• String#eachなど
2009年10月5日月曜日
もっと具体的に
•組み込みクラス等の細かい修正点も含めると、相違点は300~400ほど
2009年10月5日月曜日
違いを全て紹介するの無理
2009年10月5日月曜日
違いを体感してみる
2009年10月5日月曜日
ruby-changelog$ cd ~/src
$ darcs get http://eigenclass.org/repos/ruby-changelog$ cd ruby-changelog$ ruby ruby18-19.rb ruby18 ruby19
2009年10月5日月曜日
デモ
2009年10月5日月曜日
ベンチマーク(1)
•フィボナッチ数列def fib(n) n <= 1 ? 1 : fib(n-1) + fib(n-2)end
n = (ENV['N'] || $N || 35).to_ip fib(n)
2009年10月5日月曜日
結果
[SnowLeopard]% time ruby -s fib-bench.rb -N=35ruby -s fib-bench.rb -N=35 15.78s user 0.04s system 99% cpu 15.958 total
[SnowLeopard]e% time ruby19 -s fib-bench.rb -N=35ruby19 -s fib-bench.rb -N=35 2.62s user 0.01s system 98% cpu 2.665 total
[SnowLeopard]% time jruby -s fib-bench.rb -N=35jruby -s fib-bench.rb -N=35 3.06s user 0.38s system 58% cpu 5.854 total
2009年10月5日月曜日
ベンチマーク(2)• erubisでのベンチマーク
• erubyみたいなもの
• rubyコードをHTMLに埋め込める
•Webアプリケーションでは、こちらの数値が参考になる
2009年10月5日月曜日
結果% ruby bench.rb -n 1000*** ntimes=1000, testmode=execute
user system total realERB 1.460000 0.030000 1.490000 ( 1.499990)ERB(cached) 0.660000 0.030000 0.690000 ( 0.698136)Erubis::Eruby 0.930000 0.020000 0.950000 ( 0.955335)Erubis::Eruby(cached) 0.630000 0.030000 0.660000 ( 0.666248)Erubis::FastEruby 0.870000 0.030000 0.900000 ( 0.901067)Erubis::FastEruby(cached) 0.540000 0.030000 0.570000 ( 0.582040)
ruby19 bench.rb -n 1000 *** ntimes=1000, testmode=execute user system total realERB 1.400000 0.050000 1.450000 ( 1.471488)ERB(cached) 0.800000 0.040000 0.840000 ( 0.852346)Erubis::Eruby 1.040000 0.030000 1.070000 ( 1.080901)Erubis::Eruby(cached) 0.750000 0.040000 0.790000 ( 0.785487)Erubis::FastEruby 1.020000 0.030000 1.050000 ( 1.064794)Erubis::FastEruby(cached) 0.700000 0.040000 0.740000 ( 0.742450)
2009年10月5日月曜日
結論
•数値演算は確かに速くなった
• Ruby 1.9だからって全てが速くなった訳じゃないよ• 何でも速くなったと思っていた時期が私にもありました
2009年10月5日月曜日
Ruby1.9へ移行しよう
2009年10月5日月曜日
最初にする事•Ruby 1.8.7(1.8系最新版)を導入
•警告(-w)オプションをつけて、ワーニングを確認する
•互換性に問題がある箇所を警告
•出ない事もある(汗
2009年10月5日月曜日
注意点
•動作はするが、結果が異なる事も!
ruby 1.9.1: a = 1 10.times{|a| } # !> shadowing outer local variable - a p a # >> 1
ruby 1.8.7: a = 1 10.times{|a| } p a # >> 9
2009年10月5日月曜日
MultiRuby•MultiRubyを使えば、1.8,1.9の差異が簡単に確認できる
• ZenTestパッケージ同梱
2009年10月5日月曜日
デモ
2009年10月5日月曜日
まとめ
2009年10月5日月曜日
•数値演算バリバリなら、今すぐ1.9使え
•細かい所で使い勝手はよくなっている• Rubyは気持ち良くプログラミングできるがコンセプト
•細かい改良によって、より痒い所に手が届くようになってきた• 「神は細部に宿る」
2009年10月5日月曜日
AnyQuestion?
2009年10月5日月曜日
ご清聴ありがとうございました
2009年10月5日月曜日