Как имя переменной влияет на использование памяти приложением? - PullRequest
10 голосов
/ 13 марта 2009

Объявляя имя переменной, насколько (если вообще) она влияет на длину ее имени на общую память приложения? Есть ли максимальная длина в любом случае? Или мы можем подробно описывать наши переменные (и экземпляры) столько, сколько хотим?

Ответы [ 7 ]

21 голосов
/ 13 марта 2009

Это зависит от языка, на самом деле.

Если вы используете C ++ или C, это никак не повлияет.

Если вы используете интерпретируемый язык, вы передаете исходный код, чтобы он мог оказать существенное влияние.

Если вы используете скомпилированный язык, который компилируется в промежуточный язык, такой как Java или любой из языков .NET, то обычно имена переменных, имен классов, методов и т. Д. Являются частью IL. Наличие более длинных имен методов будет иметь влияние. Однако, если вы позже запустите обфускатор, это исчезнет, ​​так как обфускатор переименует все в (обычно) очень короткие имена. Вот почему запутывание часто оказывает влияние на производительность.

Однако я настоятельно рекомендую использовать длинные описательные имена переменных / методов / классов. Это делает ваш код понятным, поддерживаемым и читаемым - в долгосрочной перспективе это значительно перевешивает любые незначительные результаты. выгоды.

5 голосов
/ 13 марта 2009

Не влияет на скомпилированный язык.

0 голосов
/ 13 марта 2009

В Python имена, по-видимому, собраны в несколько простых таблиц; каждое имя появляется в каждом объекте кода ровно один раз. Имена не влияют на производительность.

В статистических целях я рассмотрел 20-строчную функцию, которая была решением проблемы 15 проекта Эйлера. Эта функция создала объект кода размером 292 байта. Он использовал 7 разных имен в таблице имен. Вам придется использовать имена переменных из 41 символа, чтобы удвоить размер файла байт-кода.

Это будет единственное влияние - безумно большие имена могут замедлить время загрузки вашего модуля.

0 голосов
/ 13 марта 2009

На самом деле в ASP.NET длинные имена переменных для элементов управления и главных страниц увеличивают размер сгенерированного HTML. Это добавит незначительную дополнительную память для буферизации выходного потока, но этот эффект будет наиболее заметен из нескольких сотен байтов, отправленных вами по сети.

0 голосов
/ 13 марта 2009

Как утверждают другие, имена переменных исчезают в скомпилированных языках. Я считаю, что имена локальных переменных в .Net могут быть отброшены. Но, вообще говоря, даже в интерпретируемом языке потребление памяти именами переменных незначительно, особенно в свете преимуществ хороших имен переменных.

0 голосов
/ 13 марта 2009

MSVC ++ усекает имена переменных до 255 символов. Длина имени переменной не влияет на размер скомпилированного кода.

0 голосов
/ 13 марта 2009

В скомпилированных языках почти наверняка нет; все становится символом в таблице символов. В интерпретируемых языках ответ также отрицательный, за редкими исключениями (например, в некоторых старых версиях Python разница будет).

...