有时候写了一些代码,但是在优化代码的时候出错,但是如果不优化代码,性能很差。如何让编译器不优化一段代码?
一般发布的软件都会选优化代码,点击属性选择生成就可以看到优化代码
假如有方法 Foo ,这个方法里面写了一些特殊代码,不想让编译器优化,那么可以如何做?
有一个特性,可以让编译器不优化这段函数,这个特性就是MethodImpl
[MethodImpl(MethodImplOptions.NoOptimization | MethodImplOptions.NoInlining)]
private void MethodWhichShouldNotBeOptimized()
{
}
如果使用特性,必须是 .net 3.5 以上,这个特性是在 3.5 加的,之前没有
关于 MethodImplOptions 参见 https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.methodimploptions(v=vs.110).aspx
参见:https://stackoverflow.com/a/38633044/6116637
最近看到这篇文章讲的很好 深入了解 WPF Dispatcher 的工作原理(Invoke/InvokeAsync 部分) - walterlv
本文会经常更新,请阅读原文: https://dotnet-campus.github.io//post/win10-uwp-%E7%A6%81%E6%AD%A2%E7%BC%96%E8%AF%91%E5%99%A8%E4%BC%98%E5%8C%96%E4%BB%A3%E7%A0%81.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 lindexi (包含链接: https://dotnet-campus.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。