Pythonのお勉強 Part6
■ このスレッドは過去ログ倉庫に格納されています
0708デフォルトの名無しさん
2005/06/20(月) 02:44:38自分でPythonの処理系をコンパイルするなら、オプションで上限を設定できます。
> 基本的に処理の呼び出しが名前ベースで解決されるから、
> インスタンスが増えれば増えるほどその分文字列のデータが
> 増えてくわけだ。
Pythonの文字列は(関数呼出の際の関数名など内部で使われる文字列も)
重複する文字はinternとして扱われるので、メモリの面では単純に比例して増えるわけではありません。
あと、Pythonのソースで気をつける事。# とりあえず思いついただけなので、突っ込み・追加歓迎
- 事前処理以外にevalを使わない。
- (stacklessでなければ、)再帰呼出やデータの循環構造
- リストを固定長で扱う。リサイズ時に拡張されるので、appendを直接使わない。
初期化時に長さだけ確保しておく方が良い。Cの配列ようにまとまった領域が取られる為。
- クラスで抽象データ構造を表現せずに、list,dictを使い、長さ、要素の長さを制限する事で
実行時に使うデータ領域が大体予測可能になるはず。
> Luaはコンパクトな反面、標準モジュールがPythonに劣るので・・・。
組み込み向けでは、調査しなければならないライブラリが増えるというデメリットもありますね。
>>703
memmove.cってメモリマネージメントとは関係ないですよ。
アロケーターとかは、src/Objects/obmalloc.c
■ このスレッドは過去ログ倉庫に格納されています