什么是COMPLUS_ZapDisable,为什么默认情况下没有设置?

时间:2016-02-18 16:16:02

标签: .net visual-studio debugging optimization

我知道设置COMPLUS_ZapDisable=1将"禁用Visual Studio中的调试优化,"但我似乎无法找到任何能够告诉我实际含义的参考文献。

  • 此设置实际禁用了哪些功能/功能?
  • 始终使用此设置有什么后果?
  • 如果成本是" [调试]运行速度慢一些,"我们可以尝试详细说明一下吗?差异显着吗?这种差异是否与项目规模相称?大型项目难以忍受吗?等等。
    • 我知道这个有点模糊,但解释真的是我在之后
  • 是否有一个实际已知的原因,默认情况下不设置此项?
    • 虽然欢迎提出意见,但我真的想知道是否有一个事实上的已知问题,默认地址禁用此设置

2 个答案:

答案 0 :(得分:5)

设置环境变量COMPlus_ZapDisable = 1禁用所有NGEN图像(* .ni.dll)。它也可以在注册表中设置,但不建议这样做,因为它会影响所有.NET应用程序。您通常只在调试应用程序时使用它来获得更好的调用堆栈。为了获得更好的性能,您可以仅使用环境变量COMPlus_DisableNativeImageLoadList(仅64位且需要.NET 4.6 +)的某些程序集禁用NGEN映像。

有关详细说明,请参阅: https://github.com/Microsoft/dotnet/blob/master/Documentation/testing-with-ryujit.md

(在当前的CoreCLR中,似乎已删除了DisableNativeImageLoadList。)

答案 1 :(得分:4)

此环境变量禁用JITter中的优化。 JITter会自动禁用调试版本的优化,因此只有在您希望通过非调试版本(例如,框架程序集)进行调试时才会这样做。
相关问题