代码之家  ›  专栏  ›  技术社区  ›  g t Omri Btian

visualstudio构建中“优化代码”选项的好处

  •  28
  • g t Omri Btian  · 技术社区  · 16 年前

    我们的大部分C#发行版代码都是在关闭“优化代码”选项的情况下生成的。我相信这是为了让在发布模式下构建的代码更容易调试。

    考虑到我们正在创建相当简单的桌面软件来连接到后端Web服务(即,不是一个特别的处理器密集型应用程序),那么如果任何类型的性能影响可能是预期的呢?

    是否有哪个平台可能受到更严重的影响?例如,多处理器/64位。

    5 回复  |  直到 16 年前
        1
  •  14
  •   Zian Choy    16 年前

    有关详细信息,请访问 http://blogs.msdn.com/jaybaz_ms/archive/2004/06/28/168314.aspx .

    简而言之。。。

        2
  •  33
  •   Eric Lippert    16 年前

    你是唯一能回答“性能命中”问题的人。两种方法都试一下,测量性能,看看会发生什么。打击可能很大,也可能根本不存在;没人知道“巨大”对你来说是一微秒还是二十分钟。

    http://blogs.msdn.com/ericlippert/archive/2009/06/11/what-does-the-optimize-switch-do.aspx

        3
  •  6
  •   Community Mohan Dere    5 年前

    事实上,这是有区别的,有时相当明显。真正影响性能的因素是什么(因为JIT并没有完全考虑到这一点):

    • 不必要的局部变量(即,每个调用都有更大的堆栈帧)

    • 由于过于通用的条件指令,JIT以非常简单的方式翻译它们。

        4
  •  2
  •   Ben S    16 年前

    编译器所做的优化是相当低级的,不应该影响用户的体验。

    如果您想量化应用程序上的优化,只需分析一个未优化和优化的构建并比较结果。

        5
  •  2
  •   Alex Lin    7 年前

    我发现对于复杂的CPU密集型代码(我使用的代码是montecarlo模拟,它可以产生足够的线程来100%利用计算机)。这是在36核环境中测试的)性能命中率最高可达4倍!一个需要2小时的模拟在没有优化标志的情况下大约需要9小时(路径约为500000,每个路径有500个步骤,用于大约2000个不同的对象,每个对象的计算非常复杂)。