Ruby1.9を使うにあたり1.8と違う部分
エンコーディングの指定
1.9だと内部のエンコーディングが固定されてないので、文字列のエンコーディングを指定します。#!/usr/bin/env ruby # encoding: utf-8 p "あいうえabcd"
文字列のサイズ
Ruby1.8p "あいうえabcd".size #=> 16
p "あいうえabcd".size #=> 8
1.9の場合文字列のサイズは文字数になります。
Fiber
f = Fiber.new do n = 0 loop do Fiber.yield(n) n += 1 end end p f.resume #=> 0 p f.resume #=> 1 p f.resume #=> 2
アッカーマン関数
手元のマシン環境で計測してみた。#!/usr/bin/env ruby require "benchmark" def ack(m, n) if m == 0 return n + 1 elsif n == 0 return ack(m - 1, 1) else return ack(m - 1, ack(m, n - 1)) end end Benchmark.bm do |b| b.report "ack" do ack(3, 7) end end
Ruby1.8
user system total real ack 1.290000 0.040000 1.330000 ( 1.330020)
user system total real ack 0.190000 0.000000 0.190000 ( 0.190003)