[ruby-list:497] Re: memory size

From:
Date: 1996-09-11 08:20:03 UTC
List: ruby-list #497
けいじゅ@SHLジャパンです. 

In [ruby-list :00490 ] the message: "[ruby-list:490] Re: memory size
", on Sep/04 16:45(JST) matz@caelum.co.jp (Yukihiro Matsumoto) writes:

>そうですねえ.Cからはできてもrubyからはできないですね.
>  Array.new(40)
>とかでも用意しますか.

そうして下さると嬉しいです. でも, よくよく考えると一般のオブジェクトに
もいえることだなあ...

>そうでもないんですよ.普通の言語は同じクラスのオブジェクトは
>同じ構造(同じインスタンス変数群)を持ちますが,インスタンス変
>数の宣言の無いrubyでは,使われていないインスタンス変数は存在
>せず,同じクラスのインスタンスでも持っているインスタンス変数
>が違うことがありえます.

>つーわけで sequentialに割り当てるというのは採用できません.
>もっとも,一般にインスタンス変数の数は少ないことが多いですし,
>線形検索した方が良いのかも知れません.しかし,新しい変数を使
>う度にreallocというのも嬉しくないような….

これって, rubyの実装から来ているだけであって言語上はこういう内部構造を
持たねばならないという理由はないと思いますが?

それとも, 構文解析しながら実行しているのかな? そんなことはないよね??

インスタンス変数の宣言がないとはいっても, 最初に実行されるプログラムを
構文解析する時にインスタンス変数がどれかは分かるわけだから, クラスにイ
ンスタンス変数を割り当てていけば良いと思うのですが?? あと, インスタン
ス変数が付け加わる可能性のあるload, require, include, evalなどを実行し
た時にオブジェクトの再構成を行うという手もあると思いますが? さらに, 上
記の関数の引数にリテラルが渡された場合で必ず実行される場合は, 最初の構
文解析時にクラスにインスタンス変数を割当ることもできますよね.

>あ,そうそう.今ちょっとst.cを変更してハッシュテーブルのサイ
>ズを28byteから20byteにまで減らしました.これで1オブジェクト
>あたり8yteの節約になりますね.

30%弱の節約ですね. 大きいといえば大きいですね.

>まあ,mallocによるオーバヘッドとかもありますしこんなものでは
>ないかと思います.

そんなもんですかね.

でも, 良く考えてみると. 遅いとはいえ, 3万オブジェクト+12万文字列オブジェ
クト=計15万オブジェクトを扱えるというのは, なかなかの性能であるともい
えますね.

__
..........................................石塚 圭樹@SHLジャパン(株)...
------------->アドレス変わりました!! e-mail: keiju@shljapan.co.jp <----

In This Thread

Prev Next