DBとかに保存するために配列(数値が入ってる)をスカラーに圧縮したい。"joinしてsplit"するのと"packしてunpack"だと後者が絶対早いよなーとか思ったけど、どれくらい早いのか気になったので調べてみた。配列はランダムに作ったほうがいいのかな、、、と思いながらも手を抜いた。
require 'benchmark' require 'pp' a = [1, 3, 9, 21, 30, 51, 1000, 3000, 5000, 10000] n = 10000 Benchmark.bm do |x| x.report {n.times {a.join(', ')}} x.report {n.times {a.pack('c*')}} end b = a.join(', ') c = a.pack('c*') Benchmark.bm do |x| x.report {n.times {b.split(', ')}} x.report {n.times {c.unpack('C*')}} end
5倍くらい早い感じだった。
/Users/syou6162/ruby% /opt/local/bin/ruby1.9 pack_unpack.rb user system total real 0.090000 0.000000 0.090000 ( 0.109446) 0.020000 0.000000 0.020000 ( 0.022801) user system total real 0.040000 0.000000 0.040000 ( 0.057055) 0.020000 0.000000 0.020000 ( 0.017488)
- 作者: Yugui
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/06/26
- メディア: 大型本
- 購入: 27人 クリック: 644回
- この商品を含むブログ (253件) を見る