我想檢查是否有空塊的while語句被JIT優化,所以我嘗試在發佈模式下運行我的代碼,並從Visual Studio的Debug-> Windows-> Disassembly窗口查看代碼。但是,我沒有看到編譯代碼的任何改變。我嘗試添加一些語句,我希望進行優化:如何模擬JIT優化代碼並查看更改?
bool b = false;
if (b)
{
new Object();
}
,但我仍然可以看到它的反彙編窗口上:
bool b = false;
if (b)
{
0524A8FF mov ecx,dword ptr [ebx+0Ch]
0524A902 push dword ptr ds:[33422A0h]
0524A908 mov edx,esi
0524A90A cmp dword ptr [ecx],ecx
0524A90C call 71DE3490
0524A911 test eax,eax
0524A913 je 0524A97C
0524A915 mov ecx,51DEAC4h
0524A91A call 002E30F4
0524A91F mov edi,eax
0524A921 lea edx,[edi+8]
0524A924 call 72D12410
new Object();
}
我也試圖與上一個related question提到NGEN工具,但我一直看到我的「垃圾代碼」(我希望能夠優化),也許問題是我不寫一個合適的「垃圾代碼」,這將被優化,如果這是我的情況,我會很高興這是JIT應該優化的一些更好的代碼示例。
如何添加一些可以確保優化的簡單代碼,然後在反彙編窗口中驗證我添加的代碼不存在?
請務必閱讀重複問題的所有ansewers,不只是接受一個 – Evk
@Evk - 你的意思是取消「禁止在模塊加載JIT優化」和「啓用僅我的代碼」?我已經這樣做了。 – BornToCode
所以沒有重複問題的答案可以幫助您解決問題? – Evk