[#47529] ruby1.9.2 にて、 IO#reopen で第2引数を省略したときにモードが引き継がれない — jugyo kohno <kkohno@...>

jugyo と申します

11 messages 2010/10/08
[#47562] Re: ruby1.9.2 にて、 IO#reopen で第2引数を省略したときにモードが引き継がれない — "Y. NOBUOKA" <nobuoka@...> 2010/10/15

信岡です。

[#47537] Excel用のxmlssファイルを作成するライブラリ exlap_c — "YOSHIIZUMI" <t-yoshiizumi@...>

 吉泉といいます。

11 messages 2010/10/10

[ruby-list:47513] Re: Fwd: Re: Hash の制約について( Ruby1.8)

From: "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
Date: 2010-10-02 13:02:38 UTC
List: ruby-list #47513
> > > 私の環境では500万サイズのハッシュを作ろうとすると2,097,152(20万ヘキサ)しか
> > > 作られません。問題は以下になろうと思います。
> > 
> > 10.48576 = 1ヘキサ、という単位は初耳なのですがそれはまず置いておくとしまして、
> 0x200000 = 2097152 という事です。

確実に、誤解の原因になる表現かと思います。

> ソースの一部を再掲すれば
> >>i = 0
> >>while i < friends.size
> >>	i_s = i.to_s
> >>	friends.delete( i_s.intern )
> >>	i = i + 1
> >>end
> >>puts "friends[:0] = #{friends['0'.intern]}"
> >>puts "削除されたi = #{i}"
> >>puts "削除後size = #{friends.size}"
> 0からハッシュのサイズまで削除するはずですがKISHIMOTOさんの
> 結果では半分しか消しこめていませんね。(削除されたi = 2500000 から)

i を 0 から増やしていって friends の中身を削除しながら、
i が friends のその時点での size より小さいあいだ繰り返しているので、
i が 2500000 になった時、friends.size は 2500000 なので、while から
抜け出しているわけです。

スクリプトに書かれた通りの動作ですよね?

> > 上田さんの環境ではこうならないということでしょうか?
> そうです。
> 私の環境では2097152となります。

何がでしょうか?
問題のスクリプトを実行すると、"2097152" とだけ出力されるということでしょうか?
だとしたらものすごく大変なことなのですが。

In This Thread

Prev Next