如果在發佈版本中內聯給定的方法或屬性getter,是否有任何方法可以檢查(而不是強制)?檢查方法C#中的內聯
9
A
回答
5
它們從未由C#編譯器內聯過。只有const
字段。
你可以看看C#編譯器優化here。
您可以確保方法或屬性訪問器是從未與此屬性適用於它內聯:
[MethodImpl(MethodImplOptions.NoInlining)]
7
不 - 因爲它不會在編譯時有發生;它發生在JIT時間。 C#編譯器不會執行任何內聯;代碼最終運行在CLR上。
您可以使用cordbg發現此問題,打開所有JIT優化,但您需要深入瞭解彙編代碼。我不知道有什麼方法可以在代碼中發現它。 (你可以使用調試器API來實現,儘管這可能會禁用一些內聯以開始。)
3
您必須查看機器代碼。在方法調用中設置一個斷點,當它打到時,右鍵單擊並選擇「Go To Assembly」。如果您沒有看到CALL語句,那麼它會被內聯。您必須在閱讀機器代碼時加速一點才能確定,但您可能會看到內置方法中的調用。
爲了使其準確無誤,您必須使用工具+選項,調試,常規,取消「在模塊加載時抑制JIT優化」。這確保了抖動的行爲與沒有調試器時的行爲相同,當優化器關閉時,方法不會被內聯。
1
在方法體內添加代碼以使用StackFrame
檢查堆棧跟蹤。根據我的經驗,內嵌方法不在此堆棧跟蹤中。
0
相關問題
- 1. 在C++中的內聯throw()方法
- 2. C++內聯方法實現
- 3. 在C++中內聯私有方法
- 4. 正確的方法來檢查Visual C++中的內存泄漏
- 5. MSVC - 任何檢查函數是否實際內聯的方法?
- 6. SFINAE C++方法檢查
- 7. C# - 方法無效檢查
- 8. 內聯顯示方法對快速檢查有用
- 9. C#靜態內聯方法參數
- 10. 內聯C#代碼和Page_Load方法
- 11. 最好的方法來檢查Android中的互聯網連接
- 12. 的ILGenerator方法內聯
- 13. C#方法調用的性能檢查
- 14. pimpl中的方法是內聯的嗎?
- 15. 檢查的方法被調用內部的另一種方法
- 16. 在OOP中內聯函數的正確方法C++
- 17. C++內存泄漏檢測方法
- 18. C中的模擬方法級聯#
- 19. 如何檢查IE的內聯css
- 20. Swift SpriteKit PhysicsBody內部的聯繫檢查
- 21. 如何檢查matplotlib的pylab後端以內聯方式運行?
- 22. 什麼是方法內聯?
- 23. NESASM - 內聯方法跳轉
- 24. 內聯函數/方法
- 25. 內聯方法:缺點
- 26. 靜態內聯方法?
- 27. 私有方法內聯
- 28. 檢查方法來電來源? Objective-C
- 29. 在C++中檢查內存泄漏的最佳方法是什麼?
- 30. 它有助於將方法標記爲在C++中內聯嗎?