たごもりすメモ

コードとかその他の話とか。

Apacheのログをタブ区切りにするのは本当にお得か

Apacheログのパーサを書いてて気付いたので。

どれくらい解析プログラムにやさしくなるかというと、これくらい。

Benchmark: running rx_naive, rx_optim, tsv for at least 3 CPU seconds...
  rx_naive:  3 wallclock secs ( 3.15 usr +  0.00 sys =  3.15 CPU) @ 2417.71/s (n=7612)
  rx_optim:  3 wallclock secs ( 3.78 usr +  0.00 sys =  3.78 CPU) @ 78526.94/s (n=296930)
       tsv:  4 wallclock secs ( 3.02 usr +  0.00 sys =  3.02 CPU) @ 646447.96/s (n=1954495)
             Rate rx_naive rx_optim      tsv
rx_naive   2418/s       --     -97%    -100%
rx_optim  78527/s    3148%       --     -88%
tsv      646448/s   26638%     723%       --
404 Blog Not Found:tips - ApacheのLogフォーマットの方を変えて高速化

へーと思って自分のパーサとの比較をやってたら気付いた。引用元のベンチマークスクリプトは tsv の処理対象が $logline になってるせいで、実際には全く分割が行われてなくって意味のない処理になってる。
ということで直して試してみた。直したもの(たった1行 $logline を $tsv に変えただけ)はこちら dankogaiスクリプト tsv の処理対象を $tsv に変えただけ

tagomoris$ perl benchmark2.pl 
Benchmark: running rx_naive, rx_optim, tsv for at least 3 CPU seconds...
  rx_naive:  3 wallclock secs ( 3.18 usr +  0.00 sys =  3.18 CPU) @ 5694.03/s (n=18107)
  rx_optim:  3 wallclock secs ( 3.21 usr +  0.00 sys =  3.21 CPU) @ 127888.16/s (n=410521)
       tsv:  2 wallclock secs ( 3.15 usr +  0.00 sys =  3.15 CPU) @ 221973.97/s (n=699218)
             Rate rx_naive rx_optim      tsv
rx_naive   5694/s       --     -96%     -97%
rx_optim 127888/s    2146%       --     -42%
tsv      221974/s    3798%      74%       --
tagomoris$ 

2倍も速くない。ちょっと微妙。これだけのためにタブ区切りに変えるほどでもないような気がする。