Re[4]: JIT-компилятор лажает?
От: bitferens  
Дата: 19.06.09 09:12
Оценка:
Большое спасибо, я знал, что истина где-то рядом.

Правда теперь не очень понятны две вещи:

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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.