Влияет ли то, как вы называете переменную, на использование памяти приложения?
Объявление имени переменной, насколько (если вообще) влияет длина ее имени на общую память приложения? Есть ли максимальная длина в любом случае? Или мы можем подробно остановиться на наших переменных (и экземплярах) столько, сколько захотим?
7 ответов
Это зависит от языка, на самом деле.
Если вы используете C++ или C, это не влияет.
Если вы используете интерпретируемый язык, вы передаете исходный код, поэтому он может иметь драматическое влияние.
Если вы используете скомпилированный язык, который компилируется на промежуточный язык, такой как Java или любой из языков .NET, то обычно имена переменных, имена классов, имена методов и т. д. являются частью IL. Имея более длинные имена методов будет иметь влияние. Однако, если вы позже запустите обфускатор, это исчезнет, так как обфускатор переименует все в (обычно) очень короткие имена. Вот почему обфускация часто влияет на производительность.
однако я настоятельно рекомендую использовать длинные, описательные имена переменных / методов / классов. Это делает ваш код понятным, доступным для обслуживания и читаемым - в долгосрочной перспективе это намного перевешивает любой небольшой perf. выгода.
в скомпилированных языках почти наверняка нет; все становится символом в таблице символов. В интерпретируемых языках ответ также нет, с несколькими чрезвычайно редкими исключениями (например, в некоторых старых версиях Python была бы разница).
MSVC++ усекает имена переменных до 255 символов. Длина имени переменной не влияет на размер скомпилированного кода.
Как заявили другие, имена переменных исчезают в компилируемых языков. Я считаю, что имена локальных переменных в .Net могут быть отброшены. Но вообще говоря, даже в интерпретируемом языке потребление памяти имен переменных незначительно, особенно в свете преимуществ хороших имен переменных.
фактически в ASP.NET длинные имена переменных для элементов управления и главных страниц добавляют к размеру сгенерированного HTML. Это добавит незначительную дополнительную память для буферизации выходного потока, но эффект будет наиболее заметен в дополнительных нескольких сотнях байтов, отправленных по сети.
в Python имена, похоже, собираются в несколько простых таблиц; каждое имя появляется ровно один раз в каждом объекте кода.Названия не влияют на производительность.
для статистических целей я посмотрел на 20-строчную функцию,которая была решением задачи Эйлера 15. Эта функция создала 292-байтовый объект кода. Он использовал 7 различных имен в таблицу имен. Вам придется использовать имена 41-символьных переменных, чтобы удвоить размер файла байтового кода.
Это было бы единственным воздействием-безумно большие имена могут замедлить время загрузки для вашего модуля.