Я играл с различными типами операций с собственным кодом в Visual Basic, а затем проверял код с помощью Reflector, чтобы увидеть, какой тип MSIL создается.Например, мне было интересно, в одной строке If-Then-Else, отличной от If-Then-Else, разделенной на несколько строк, то есть.
If x > y Then x Else y
против
If x > y Then
x
Else
y
End If
Оказывается, эти два компиляции в один и тот же MSIL.Тогда я задумался о новом операторе If , похожем на старую функцию IIf .Важно отметить, что на самом деле IIf является функцией и поэтому накладывает накладные расходы на вызов функции, поэтому, хотя она и выглядит лаконичной, она имеет свои недостатки.Кроме того, он оценивает как TruePart, так и FalsePart перед возвратом значения, т.е.не закорачивает, поэтому может иметь неожиданное поведение.Итак, я буду придерживаться оператора If .
Получается, когда вы используете оператор If для той же функциональности, например так ...
If(x > y, x, y)
Произведенный MSIL намного меньше и, казалось бы, более эффективен.Что приводит меня к вопросу в теме.
Соответствует ли размер скомпилированного кода в MSIL скорости кода?