2015-04-01 40 views
3

我們正在使用編譯的表達式樹來動態生成代碼;我們在運行時只提供一些信息,使我們能夠(理論上)編寫更簡單,更快的代碼。 在很多情況下,我們確實獲得了性能提升。編譯的表達式樹由於JIT_MethodAccessCheck而變慢

但是,在某些情況下,我們會受到性能影響。在這種情況下,在Visual Studio探查顯示,在性能上的差異是由於這種方法(不顯示在所有在靜態編譯的代碼)

JIT_MethodAccessCheck 

這是什麼方法呢? (谷歌沒有太多的話要說)。 我可以以某種方式優化它嗎?

+0

這是一個抖動輔助函數,它會自動生成一個調用來驗證沙箱限制。確切的細節非常模糊,你可以通過coreclr源代碼來挖掘細節。優化代碼最重要的細節是知道你什麼時候完成。如果這個功能占主導地位,那麼你可能已經完成了過濾。 – 2015-04-01 18:00:41

+0

@Hans是否可以通過'[assembly:AllowPartiallyTrustedCallers] [程序集:SecurityTransparent] [程序集:SecurityRules(SecurityRuleSet.Level2,SkipVerificationInFullTrust = true)]來解決這個問題。 – xanatos 2015-04-01 18:40:25

+0

@xanatos - [此問題](http://stackoverflow.com/q/24802222/738851)後的評論包含這些屬性,因此可能值得一試。 – Rob 2015-04-02 08:43:40

回答