[#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:43921] Re: Hashへの生成順は保障されないのか?

From: Tanaka Akira <akr@...>
Date: 2007-08-22 05:58:12 UTC
List: ruby-list #43921
In article <86sl6dgikh.knu@iDaemons.org>,
  "Akinori MUSHA" <knu@iDaemons.org> writes:

>  1. 名実一致
>     Hash というその名称から、順序性を期待させるべきでない。
>     (この時点で大義がない)

これはありうる理由だと思います。
ただ、同時に、ときに名前と中身がずれることがあるのも事実だと
思います。

>  3. 互換性
>     記法が変わらないため、コード断片を見ただけでは順序性を期待
>     しているのかどうか読み取れなくなる。これは他の言語や古い
>     バージョンのRubyへの移植の妨げになる。

Ruby のバージョンについては過渡的な話でしょう。

他の言語については、PHP から Ruby への移植で困ったとかいう話
が今までに多かったでしょうか。

>     また、 shim (compatibility layer)を実装しようにも、大幅な
>     性能劣化を伴わずに実現できるか疑わしい。

必要なら 1.9 から backport すればいいでしょう。

>  2. 性能
>     メモリ使用量増加や速度低下をもたらし、今後の最適化の余地も
>     制限する。

どう最適化するか、想定していることはありますか?

速度低下は測定結果を見る限りあまり気にならないように思えます。

ただ、メモリ使用量増加はリアルな問題になり得ると思います。

もちろん、メモリ全体に対する st の割合が問題になるので、まず
は測定してみないことには、ということで測定してみました。

とりあえず測定対象は以下のものです。

* sample/test.rb
* test/runner.rb
* rm -rf .ext/rdoc して ./bin/rdoc --all --ri --op .ext/rdoc .

これらを valgrind の massif ではかってみました。
(massif は heap profiler です。いきなり ps で図が出ます。)

r13123 と r13128 で ruby を作って、

valgrind --tool=massif --format=html \
--alloc-fn=ruby_xmalloc --alloc-fn=ruby_xrealloc \
--alloc-fn=ruby_xrealloc2 --alloc-fn=ruby_xmalloc2 \
--alloc-fn=ruby_xcalloc \
./ruby ./bin/rdoc --all --ri --op .ext/rdoc .

などとして生成されたものを
http://cvs.m17n.org/~akr/diary/2007-08/
においておきました。
(test-all は runner.rb を実行したプロセスのものだけです。)

いきなりすごくでかくなる程って程じゃないですが、見てわかる影
響はあります。見比べると、st 関係が一番膨らんでるのは rdoc
ですかね。

とりあえず内部的に使ってる st で、順序が不要なことがわかって
いるものにまで順序を付けるのは避けたほうがいいんじゃないかと
感じます。シンボルのやつとか。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread