Ruby2.0のlazyを試してみる
Ruby2.0のプレビュー版がでたとのことで、新機能のlazyを試してみる。
#!/usr/bin/env ruby # coding:utf-8 exit unless RUBY_VERSION >= '2.0.0' require "benchmark" require "prime" a = b = nil Benchmark.bm(10) do |x| x.report("not lazy:") { a = (1..100000).select(&:prime?).take(10) } x.report("lazy:") { b = (1..100000).lazy.select(&:prime?).take(10).force } end puts "-"*20 puts "a = #{a.join(',')}" puts "b = #{b.join(',')}"
$ ruby -v ruby 2.0.0dev (2012-11-01 trunk 37411) [i686-linux] $ ruby hoge.rb user system total real not lazy: 3.010000 0.000000 3.010000 ( 3.019988) lazy: 0.000000 0.000000 0.000000 ( 0.000410) -------------------- a = 2,3,5,7,11,13,17,19,23,29 b = 2,3,5,7,11,13,17,19,23,29
ふむふむ。