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