Какое влияние оказывает использование 'var' на производительность компилятора C #? - PullRequest
19 голосов
/ 18 февраля 2010

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

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

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

Ответы [ 4 ]

20 голосов
/ 18 февраля 2010

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

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

16 голосов
/ 18 февраля 2010

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

3 голосов
/ 18 февраля 2010

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

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

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

1 голос
/ 19 февраля 2010

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

...