LoginSignup
3
3

More than 5 years have passed since last update.

ary-[nil] と ary.compact

Last updated at Posted at 2014-10-19

ary-[nil] より ary.compact の方が良いと書いたものの、速度を調べていなかった。
で。
調べてみた。

まずはグラフ。対数目盛に注意。縦軸は時間。

remonil.png

なんかsrc.compact のグラフ形状が変な感じ。

概ね、5〜10 倍ぐらい速さが違う。
ruby は ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-darwin13.0] を使った。

まあ、速さのために compact を使うんじゃなくて「有意義なものだけにする」という処理に compact という名前がついているのでそれを使ったほうが良い、ということなんだけど、速さの面でもメリットがあるよ、という話なのでした。

もちろんゴルファーは a-[nil] で。

あと。このグラフの元になったソースコードは以下のとおり。

require "benchmark"

(0..7).each do |ary_size_e|
  ary_size =10**ary_size_e
  src=Array.new(ary_size){  |n|
    n%2==0 ? nil : n
  }

  trial = (10**7/ary_size ).ceil
  puts "array size : #{ary_size},trial count : #{trial}"
  Benchmark.bmbm(13) do |x|
    x.report( "src-[nil]" ){ trial.times{ src - [nil] } }
    x.report( "src.compact" ){ trial.times{ src.compact } }
  end
end

続編が
http://qiita.com/Nabetani/items/623df6f738864b5ed005
にあります。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3