2009-03-13 20 views
10

変数名を宣言すると、その名前の長さはアプリケーションの合計メモリにどのくらいの影響を与えますか?とにかく最大の長さはありますか?あるいは、私たちの変数(およびインスタンス)について、私たちが望むだけ自由に手がけていますか?変数の名前付けは、アプリケーションのメモリ使用量にどのような影響を与えますか?

+0

+1 - 私はこれを尋ねようとしていました。 – mauris

答えて

20

実際には言語によって異なります。

C++またはCを使用している場合は、影響はありません。

インタプリタ言語を使用している場合は、ソースコードを渡しているため、劇的な影響があります。

Javaや.NET言語などの中間言語にコンパイルされたコンパイル言語を使用している場合、通常、変数名、クラス名、メソッド名などはすべてILの一部です。より長いメソッド名を持つことは影響を与えます。しかし、あとでobfuscatorを実行すると、obfuscatorがすべての名前を(通常は)非常に短い名前に変更するため、これはなくなります。これは、難読化がパフォーマンスの影響を与えることが多い理由です。

しかし、私は、長い記述変数/メソッド/クラス名の使用を強く勧めます。これにより、コードを理解しやすく、保守しやすく、読みやすいものにしてくれます。長期的には、わずかなパフォーマンスをはるかに上回ります。利益。

+0

ILを考慮するために+1 –

+0

ILは無視するにはあまりにも重要です。 Java、C#、VB.Netはあなたが考えているものですが、Pythonでさえも解釈されません。それはILの独自の形式です... –

+0

名前はILの一部ですが、.NETでは少なくともILは機械語にJITされているので、変数名もありません。 –

5

コンパイルされた言語には影響しません。

0

コンパイルされた言語では、ほとんど確かにそうではありません。すべてがシンボルテーブルのシンボルになります。解釈された言語では、答えはノーで、いくつかの非常にまれな例外があります(Pythonの古いバージョンでは、違いがあります)。

0

MSVC++は変数名を255文字に切り捨てます。変数名の長さは、コンパイルされたコードサイズに影響を与えません。

0

他で述べたように、変数名はコンパイルされた言語では消えます。私は.Netのローカル変数名が破棄されるかもしれないと信じています。しかし、一般に言えば、解釈された言語であっても、変数名のメモリ消費量は無視できます。

0

実際、ASP.NETでは、コントロールやマスターページの長い変数名は、生成されるHTMLのサイズに追加されます。これにより、出力ストリームをバッファリングするために余分なメモリが追加されますが、ネットワーク経由での送信では数百バイトの余分なデータが必要になります。

0

Pythonでは、名前はいくつかの単純なテーブルに集められているようです。各名前は各コードオブジェクトに一度だけ表示されます。名前はパフォーマンスに影響を与えません。

統計的な理由から、私はProject Euler問題15の解決策であった20行の関数を調べました。この関数は292バイトのコードオブジェクトを作成しました。これは、名前テーブルに7つの異なる名前を使用しました。バイトコードファイルのサイズを2倍にするには、41文字の変数名を使用する必要があります。

これは唯一の影響です。モジュールの読み込み時間が遅くなる可能性があります。

関連する問題