26
今さら聞けないRuby 1.9 Hokuriku.rb関係者 でむやん 2009105日月曜日

いまさら聞けないRuby1.9

  • Upload
    demuyan

  • View
    1.066

  • Download
    0

Embed Size (px)

Citation preview

Page 1: いまさら聞けないRuby1.9

今さら聞けないRuby 1.9

Hokuriku.rb関係者 でむやん

2009年10月5日月曜日

Page 2: いまさら聞けないRuby1.9

アジェンダ

•Ruby 1.9とは

• Ruby 1.8との違い

• Ruby 1.8 → 1.9への移行方法

2009年10月5日月曜日

Page 3: いまさら聞けないRuby1.9

Ruby 1.9とは

•新しいRubyです

• 1.9.1リリースが2009年1月30日

•比較的最近ですね

2009年10月5日月曜日

Page 4: いまさら聞けないRuby1.9

何が違うの?

2009年10月5日月曜日

Page 5: いまさら聞けないRuby1.9

大きな変更点•Multilingualization

(M17N)

•YAVMの搭載

• Yet Another Virtual Machine

• 内部コンパイラが良くなったよ、て事

2009年10月5日月曜日

Page 6: いまさら聞けないRuby1.9

ナンバリング変更•今までは奇数が開発版、偶数が安定版

• Ruby 1.9.0は開発版

• Ruby 1.9.1以降は安定版

• Ruby 2.0は特別な意味を持つ

2009年10月5日月曜日

Page 7: いまさら聞けないRuby1.9

1.8との互換性

•100%互換ではない

•組み込みクラスで無くなったメソッドがある

• String#eachなど

2009年10月5日月曜日

Page 8: いまさら聞けないRuby1.9

もっと具体的に

•組み込みクラス等の細かい修正点も含めると、相違点は300~400ほど

2009年10月5日月曜日

Page 9: いまさら聞けないRuby1.9

違いを全て紹介するの無理

2009年10月5日月曜日

Page 10: いまさら聞けないRuby1.9

違いを体感してみる

2009年10月5日月曜日

Page 11: いまさら聞けないRuby1.9

ruby-changelog$ cd ~/src

$ darcs get http://eigenclass.org/repos/ruby-changelog$ cd ruby-changelog$ ruby ruby18-19.rb ruby18 ruby19

2009年10月5日月曜日

Page 12: いまさら聞けないRuby1.9

デモ

2009年10月5日月曜日

Page 13: いまさら聞けないRuby1.9

ベンチマーク(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日月曜日

Page 14: いまさら聞けないRuby1.9

結果

[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日月曜日

Page 15: いまさら聞けないRuby1.9

ベンチマーク(2)• erubisでのベンチマーク

• erubyみたいなもの

• rubyコードをHTMLに埋め込める

•Webアプリケーションでは、こちらの数値が参考になる

2009年10月5日月曜日

Page 16: いまさら聞けないRuby1.9

結果% 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日月曜日

Page 17: いまさら聞けないRuby1.9

結論

•数値演算は確かに速くなった

• Ruby 1.9だからって全てが速くなった訳じゃないよ• 何でも速くなったと思っていた時期が私にもありました

2009年10月5日月曜日

Page 18: いまさら聞けないRuby1.9

Ruby1.9へ移行しよう

2009年10月5日月曜日

Page 19: いまさら聞けないRuby1.9

最初にする事•Ruby 1.8.7(1.8系最新版)を導入

•警告(-w)オプションをつけて、ワーニングを確認する

•互換性に問題がある箇所を警告

•出ない事もある(汗

2009年10月5日月曜日

Page 20: いまさら聞けないRuby1.9

注意点

•動作はするが、結果が異なる事も!

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日月曜日

Page 21: いまさら聞けないRuby1.9

MultiRuby•MultiRubyを使えば、1.8,1.9の差異が簡単に確認できる

• ZenTestパッケージ同梱

2009年10月5日月曜日

Page 22: いまさら聞けないRuby1.9

デモ

2009年10月5日月曜日

Page 23: いまさら聞けないRuby1.9

まとめ

2009年10月5日月曜日

Page 24: いまさら聞けないRuby1.9

•数値演算バリバリなら、今すぐ1.9使え

•細かい所で使い勝手はよくなっている• Rubyは気持ち良くプログラミングできるがコンセプト

•細かい改良によって、より痒い所に手が届くようになってきた• 「神は細部に宿る」

2009年10月5日月曜日

Page 25: いまさら聞けないRuby1.9

AnyQuestion?

2009年10月5日月曜日

Page 26: いまさら聞けないRuby1.9

ご清聴ありがとうございました

2009年10月5日月曜日