[#43857] Hashへの生成順は保障されないのか? — Hiroshi Kasamatsu <qqmn89yb9@...>

こんにちは、笠松と申します。

88 messages 2007/08/18
[#43858] Re: Hashへの生成順は保障されないのか? — Urabe Shyouhei <shyouhei@...> 2007/08/18

Hiroshi Kasamatsu wrote:

[#43862] Re: Hashへの生成順は保障されないのか? — Hiroshi Kasamatsu <qqmn89yb9@...> 2007/08/19

皆さん、早速のレスありがとうございます。

[#43863] Re: Hashへの生成順は保障されないのか? — Urabe Shyouhei <shyouhei@...> 2007/08/19

Hiroshi Kasamatsu wrote:

[#43870] Re: Hashへの生成順は保障されないのか? — Hiroshi Kasamatsu <qqmn89yb9@...> 2007/08/20

Urabeさん、笠松です。レスありがとうございます。

[#43872] Re: Hashへの生成順は保障されないのか? — Urabe Shyouhei <shyouhei@...> 2007/08/20

Hiroshi Kasamatsu wrote:

[#43873] Re: Hashへの生成順は保障されないのか? — cuzic <cuzic@...> 2007/08/20

cuzic です。

[#43874] Re: Hashへの生成順は保障されないのか? — Urabe Shyouhei <shyouhei@...> 2007/08/20

cuzic wrote:

[#43875] Re: Hashへの生成順は保障されないのか? — Tanaka Akira <akr@...> 2007/08/20

In article <46C9E7BB.4060100@ruby-lang.org>,

[#43876] Re: Hashへの生成順は保障されないのか? — Urabe Shyouhei <shyouhei@...> 2007/08/20

おお、田中さんを満足させる説明ってのは結構ハードル高そうだな。

[#43878] Re: Hashへの生成順は保障されないのか? — しん <dezawa@...> 2007/08/20

# 出遅れたので、レスすべきメールが判らなくなってしまったので、手近なのに

[#43879] Re: Hashへの生成順は保障されないのか? — Yukihiro Matsumoto <matz@...> 2007/08/20

まつもと ゆきひろです

[#43887] Re: Hashへの生成順は保障されないのか? — Nobuyoshi Nakada <nobu@...> 2007/08/21

なかだです。

[#43891] Re: Hashへの生成順は保障されないのか? — SASADA Koichi <ko1@...> 2007/08/21

 ささだです。

[#43892] Re: Hashへの生成順は保障されないのか? — Yukihiro Matsumoto <matz@...> 2007/08/21

まつもと ゆきひろです

[#43893] Re: Hashへの生成順は保障されないのか? — Nobuyoshi Nakada <nobu@...> 2007/08/21

なかだです。

[#43899] Re: Hashへの生成順は保障されないのか? — "Akinori MUSHA" <knu@...> 2007/08/21

At Tue, 21 Aug 2007 13:59:43 +0900,

[#43900] Re: Hashへの生成順は保障されないのか? — SASADA Koichi <ko1@...> 2007/08/21

 ささだです。

[#43906] Re: Hashへの生成順は保障されないのか? — "Akinori MUSHA" <knu@...> 2007/08/21

At Tue, 21 Aug 2007 19:29:11 +0900,

[#43921] Re: Hashへの生成順は保障されないのか? — Tanaka Akira <akr@...> 2007/08/22

In article <86sl6dgikh.knu@iDaemons.org>,

[#43926] Re: Hashへの生成順は保障されないのか? — Tanaka Akira <akr@...> 2007/08/23

In article <87zm0kaz60.fsf@fsij.org>,

[#43927] Re: Hashへの生成順は保障されないのか? — Yugui <yugui@...> 2007/08/24

Yuguiといいます。

[#43930] Re: Hashへの生成順は保障されないのか? — Yukihiro Matsumoto <matz@...> 2007/08/24

まつもと ゆきひろです

[ruby-list:43926] Re: Hashへの生成順は保障されないのか?

From: Tanaka Akira <akr@...>
Date: 2007-08-23 04:42:06 UTC
List: ruby-list #43926
In article <87zm0kaz60.fsf@fsij.org>,
  Tanaka Akira <akr@fsij.org> 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]

In This Thread