Влияют ли пустые переменные на время работы

267
23 июля 2017, 08:17

Вот мне стало интересно, влияют ли переменные пустые на работу кода?

У меня возникла хорошая идейка на счет написания собственого Языка Программирования и мне нужно ускорить время работы компилятора.

Там есть много конфигов типа @version @last_update @error_list и некоторые из этих параметров будут пустые. При считывании большого текстовика весом в 0,5 гб вылетело OutOfMemoryException и я решил убавить условий, переменных и т.д. А потом мне сказали, что переменные не занимают время работы и вес.

Вопрос:

Много ли оперативки, времени и места занимают переменные, даже если они пустые?

Answer 1

Если кратко, то не влияют и не занимают, если сборка выполнялась в конфигурации Release, при которой компилятор C# убирает все неиспользуемые переменные, а также "мертвые" ветки кода.

В Debug конфигурации такая оптимизация не выполняется для того, чтобы в отладчике можно было посмотреть содержимое "пустых" переменных, а также произвольно перемещать точку выполнения назад/вперед.

Важно также упомянуть, что в C#, в отличие от C/C++, нельзя создать пустую переменную — компилятор потребует её проинициализировать — за это отвечает стадия компиляции Control Flow Analysis.

Любая локальная переменная, если она не убрана компилятором заранее, занимает место в стеке плюс, в зависимости от типа (value type или reference type) и способа инициализации (ссылка на существующий объект или new), еще и в куче.

К примеру, любая переменная ссылочного типа занимает 4 или 8 байт (в зависимости от архитектуры) в стеке. Переменная значимого типа (например, структура) может занимать больше.

Само по себе наличие переменной не может влиять на производительность, только на память. А дальше всё зависит от того, что вы с этой переменной делаете.

READ ALSO
Как вывести первый элемент из коллекции ASP.NET

Как вывести первый элемент из коллекции ASP.NET

Есть модель новостей, там коллекция картинок (их несколько штук для каждой новости)Надо вывести только первую картинку из этой коллекции

265
Как выбрать макс. значение для каждого типа из массива объектов?

Как выбрать макс. значение для каждого типа из массива объектов?

У меня есть массив объектовНужно выбрать для каждого type максимальный number

222