title | author | date | CreateTime | categories |
---|---|---|---|---|
win10 uwp 禁止编译器优化代码 |
lindexi |
2018-08-10 19:16:50 +0800 |
2018-2-13 17:23:3 +0800 |
Win10 UWP |
有时候写了一些代码,但是在优化代码的时候出错,但是如果不优化代码,性能很差。如何让编译器不优化一段代码?
一般发布的软件都会选优化代码,点击属性选择生成就可以看到优化代码
假如有方法 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