なかだです。

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るくらいがちょうどいいかも;-)" 伸悦