From: Tanaka Akira Date: 2007-08-23T13:42:06+09:00 Subject: [ruby-list:43926] Re: Hashへの生成順は保障されないのか? In article <87zm0kaz60.fsf@fsij.org>, Tanaka Akira writes: > いきなりすごくでかくなる程って程じゃないですが、見てわかる影 > 響はあります。見比べると、st 関係が一番膨らんでるのは rdoc > ですかね。 もうちょっと測った結果、どうもインスタンス変数を表現する st (iv_tbl) が膨らんでるのが原因のようです。 インスタンス変数の順序を覚えてほしいと思う人は、まぁ、個人的 には pp と inspect でその順序を使いたいという気はしますが、 st_table_entry のフィールドをふたつ増やしてまでしたいかとい うと、それほどには思いません。 とすると、st ぜんぶを順序つきにするのはさすがにやりすぎで、 やるにしても両方提供して、少なくとも iv_tbl は順序なしにする のが順当のように思います。そうすれば、rdoc のケースでは、メ モり消費はたいして増えないようになる感じがします。 (測った結果、インスタンス変数以外では Hash は出てこなくて、 むしろ Range が出てきたので、Hash は支配的でないように思う) もちろん、rdoc のケースでそうだったからといってすべてのケー スで問題ないとは限らないわけで、Hash をたくさんたくさんつか うケースでは問題になるでしょう。 というわけで、Hash::Ordered とかとして別に作るのがいいんじゃ ないですかね。 そして、リテラルの {} を Hash::Ordered にするとかどうですか ね。{} にはどこにも hash という単語が出てきませんし、記法と しても順序がありますし。まぁ、1次元の文字列でプログラムを書 く以上、順序の無い記法というのはまずありえないわけですが... -- [田中 哲][たなか あきら][Tanaka Akira]