Home > 8月, 2006

2006.08.27

Hpricot

HpricotというRuby用のHTMLパーサに注目していたのですが、 最近ちょうど使いたい場面があったので使ってみました。 まず、Hpricotはスキャン部分がC言語で書かれていて、類似のHTreeより高速だということですので両者を比べてみました。

require 'benchmark'
require 'open-uri'
require 'rubygems'
require 'hpricot'
require 'htree'

str = open('http://www.ruby-lang.org/en/').read

n = 100
Benchmark.bm {|x|
  x.report {n.times {HTree(str)}}
  x.report {n.times {Hpricot(str)}}
}

結果は次のようになり、たしかにHpricot(下の段)の方がかなり高速なようです。

     user     system      total        real
11.773438   0.671875  12.445312 ( 13.631620)
 4.750000   0.359375   5.109375 (  5.644100)

使い方等についてはwikiHTMLパーサ Hpricotにまとめました。 使い勝手もかなり良く、おすすめです。

2006.08.19

Ruby or Rails CheatSheets

Ruby Inside16 Great Ruby Articles and Resources In The $100 Contest So Farという記事で、 Ruby or Rails Cheat Sheetsというのが紹介されています。 RubyやRailsのcheat sheet やリファレンスがいくつかあがっていて、たとえば Ruby On Rails Referenceなんかは、結構便利。しかし、Ruby on Rails Cheat Sheetをみると、もはやRubyとRailsは区別されていない感じです。

2006.08.16

faster Symbol.to_s

High-performance Ruby: faster Symbol.to_sという記事でSymbol#to_sを高速化する方法が紹介されています。(最初に見たときはもっと長いコードでしたが、今見たらいろいろコメントがついて、よりエレガントに更新されているようです。)コメントにあるように、

   @str_rep ||= to_s

よりも

   @str_rep || (@str_rep = to_s)

のほうが速いと言うのははじめて知りました。