Ruby 1.9.xではRange#include?の実装が変わり、Ruby 1.8.xよりも圧倒的に遅くなるケースがあります。これは、Ruby 1.9.xへ移行したときの有名なハマりポイントの1つでしょう。 例えば、こんなケースです。 require 'time' require 'benchmark' Benchmark.bm(10) do |bm| march = Time.parse("2010/03/01")...Time.parse("2010/04/01") march_15 = Time.parse("2010/03/15") bm.report("include?") do march.include?(march_15) end end 2010年3月15日が2010年3月に入っているかを調べています。 これをRuby 1.8.7で動かすとこうなります。 % ruby
![Ruby 1.9.xでRange#include?を高速に動かす方法 - 2010-03-25 - ククログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/06bdd2cfba37af959427276749418d8c86b5e4b3/height=288;version=1;width=512/https%3A%2F%2Fwww.clear-code.com%2Fimages%2Ficon.png)