Вот мне стало интересно, влияют ли переменные пустые на работу кода?
У меня возникла хорошая идейка на счет написания собственого Языка Программирования и мне нужно ускорить время работы компилятора.
Там есть много конфигов типа @version @last_update @error_list и некоторые из этих параметров будут пустые. При считывании большого текстовика весом в 0,5 гб вылетело OutOfMemoryException и я решил убавить условий, переменных и т.д. А потом мне сказали, что переменные не занимают время работы и вес.
Вопрос:
Много ли оперативки, времени и места занимают переменные, даже если они пустые?
Если кратко, то не влияют и не занимают, если сборка выполнялась в конфигурации Release, при которой компилятор C# убирает все неиспользуемые переменные, а также "мертвые" ветки кода.
В Debug конфигурации такая оптимизация не выполняется для того, чтобы в отладчике можно было посмотреть содержимое "пустых" переменных, а также произвольно перемещать точку выполнения назад/вперед.
Важно также упомянуть, что в C#, в отличие от C/C++, нельзя создать пустую переменную — компилятор потребует её проинициализировать — за это отвечает стадия компиляции Control Flow Analysis.
Любая локальная переменная, если она не убрана компилятором заранее, занимает место в стеке плюс, в зависимости от типа (value type или reference type) и способа инициализации (ссылка на существующий объект или new), еще и в куче.
К примеру, любая переменная ссылочного типа занимает 4 или 8 байт (в зависимости от архитектуры) в стеке. Переменная значимого типа (например, структура) может занимать больше.
Само по себе наличие переменной не может влиять на производительность, только на память. А дальше всё зависит от того, что вы с этой переменной делаете.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей