Подтвердить что ты не робот

Как сильно влияет использование "var" на производительность С# Compiler?

Я нахожу, что ключевое слово var очень помогает в уменьшении шума в моем коде С# с небольшой потерей читаемости; Я бы сказал, что теперь я использую явное написание только тогда, когда компилятор меня заставляет.

Я знаю, что с использованием var не изменяет характеристики времени исполнения моего кода. Но вопрос только что пришел мне в голову: могу ли я заплатить большой штраф за время компиляции за всю дополнительную работу, которую компилятор сейчас делает от моего имени?

Кто-нибудь сделал какие-то тесты, чтобы узнать, сколько различие в широком использовании var составляет время компиляции?

4b9b3361

Ответ 1

Мой совет: попробуйте в обоих направлениях. Измерьте результаты. Тогда вы узнаете.

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

Ответ 2

В любом случае типы нужно проверять, это может даже сэкономить время... ОК, маловероятно:)
Вам все равно, если ваша среда разработки будет медленной, купите больше памяти или новый компьютер. Не изменяйте способ написания кода.

Ответ 3

Правильный ответ "ничего не измерим". Для частичного (еще длинного) списка проходов, который компилятор С# делает во время компиляции, смотрите здесь:

http://blogs.msdn.com/ericlippert/archive/2010/02/04/how-many-passes.aspx

Тогда поймите, что вывод типа является лишь частью одного прохода в этом списке.

Ответ 4

Тип правой стороны должен быть найден в любом случае для проверки типа и/или преобразования типов. Присвоение результата переменной типа дешево. Большая часть стоимости (если таковая имеется) будет заключаться в том, что нужно было сделать, чтобы позволить выражение оцениваться до объявления всех локальных переменных, но вы платите за это, даже если вы не используете var. (Кстати, возможно или даже вероятно, что указанное ограничение не повредит производительности вообще.)