[#39863] forループの速度 — Masahiro Sato <msato@...>

15 messages 2004/07/20

[#39868] イテレータとfor文 — OOTANI TAKASHI <otn@...5.so-net.ne.jp>

大谷と申します。

31 messages 2004/07/20
[#39886] Re: イテレータとfor文 — Tietew <tietew-ml-ruby-list@...> 2004/07/21

[ruby-list:39916] Re: htreeの高速化

From: Tanaka Akira <akr@...17n.org>
Date: 2004-07-24 03:37:19 UTC
List: ruby-list #39916
In article <41011135.8080007@moonwolf.com>,
  MoonWolf <moonwolf@moonwolf.com> writes:

> htree(http://raa.ruby-lang.org/project/htree/)で大きなHTMLをパースすると
> メモリを大量に消費し処理時間も長いので、高速化・省メモリ化を試みました。
> (http://devlog.moonwolf.com/20040723.html#p01)

基本的には受け入れようと思うのですが、質問があります。

> 2. HTree::Nameオブジェクトの共有化
>  immutableなオブジェクトなのでHTree::NAMEというHashにキャッシュして
> Name.new(arg)をNAME[arg]に書き換えました。
>  ObjectSpaceからオブジェクト数を調べて見ると21,504個あったHTree::Nameが
> 29個と激減しメモリ使用量も減りました。

Name.new を再定義するほうが好みなので、そうしようと思います。

> 3. caseからif〜elsifへの書き換えと比較順序の変更
>  一番出現頻度が高いと思われる:text_pcdataを最初にチェックするようにしま
> した。

順番は分かるんですが、case から if/elsif へ変えるのは高速化に寄与する
んでしょうか?
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread