From: nobu.nakada@... Date: 2000-05-13T00:36:44+09:00 Subject: [ruby-list:22490] Re: IO#read with prepared buffer (was Re: IO.foreach) なかだです。 At Fri, 12 May 2000 23:30:22 +0900, kjana@os.xaxon.ne.jp (YANAGAWA Kazuhisa) wrote: > > | でも、それよりも気になって来たんですが、結果はどうやって返って来るん > > |でしょう。 > > | > > |1. 引数の string 自体、読んだバイト数は string.size > > |2. 読んだバイト数、string.size 自体は変更無し > > > > たぶん1じゃないですかね。 > > 考えてたのは > > buf = "\0"*256 > inf.read_with_buf(buf) > > がほぼ > > fread(RSTRING(buf)->ptr, 1, RSTRING(buf)->len, inf); > > になるというもの.返り値は実際に読み込んだバイト数. あ、そっか。最初からサイズ固定なんですね。なんか思い違いをし てたようです。つい fgets() みたいのを考えてました。 > > | あたりが思い付くんですが、1.だと結局毎回新たにバッファ用の Stringを > > |作りなおさなきゃいけないだろうし、2.だと無効なデータが後ろにくっついた > > |まま、長さは別途管理というかなりキモチわるい状態になってしまって、結局 > > |そのあと有効な部分だけを切り出さざるを得ないとか、メリットが生きて来な > > |いんじゃなかろうかと。 > > > > たぶんreallocを行うことになると思いますので、うまくいけば > > mallocが減るというくらいじゃないかと。あと、GCの回数が減るの > > も嬉しいかも。 > > だもんで,一度作ったオブジェクトが必ずそのまま使いまわされる,と.もち > ろんこれはループ中で何度も同じ大きさのブロックの読み込まないといきてこ > ないので,だいぶ特定用途向けになってしまいます. > > # で,「需要はあるかなあ」と. いってみれば「固定長レコードファイル」専用ですね。これはこれ で需要もありそうですが。 -- そうだ 強気に ちょっと インチキに☆彡 中田 "Bugるくらいがちょうどいいかも;-)" 伸悦