Большое спасибо, я знал, что истина где-то рядом.
Правда теперь не очень понятны две вещи:
1. Почему не идентичны результаты запусков релиза из консоли и студии?
2. Можно ли доверять ассемблерному листингу, который выдает студия?
Присваивание поля транслируется так (в релизе):
{
test.Field = i;
mov eax,dword ptr [ebp-20h]
cdq
mov ecx,dword ptr [ebp+FFFFFF74h]
mov dword ptr [ecx+4],eax
mov dword ptr [ecx+8],edx
А присваивание свойства так:
{
test.Property = i;
mov eax,dword ptr [ebp-2Ch]
cdq
push edx
push eax
mov ecx,dword ptr [ebp+FFFFFF74h]
cmp dword ptr [ecx],ecx
call dword ptr ds:[000F9DC4h]
Видно, что присваивание свойства выливается в косвенный вызов. Хотя, судя по времени выполнения (не из студии), его быть не должно.
Есть ли какая-то возможность посмотреть, что реально генерирует JIT-компилятор?
Здравствуйте, _FRED_, Вы писали:
_FR>Здравствуйте, bitferens, Вы писали:
B>>Запускал конечно в релизе, через студию, в дебаге чудес не жду).
B>>Оптимизация в релизе естественно включена.
_FR>Запусти не через студию. Перед этим прогони сборку через NGen.