Насколько влияет использование " var " на производительность компилятора C#?

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

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

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

4 ответов


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

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


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


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

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

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


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