相关疑难解决方法(0)

"优化代码"选项在Visual Studio中的作用是什么?

选项的名称可以说明Visual Studio /编译器的真正含义以及真正的后果是什么?

编辑:如果你搜索谷歌,你可以找到这个地址,但这不是我真正想要的.我想知道真实的事情发生了.例如,为什么循环得到的时间更少等等.

optimization visual-studio

73
推荐指数
2
解决办法
4万
查看次数

为什么结构比这个特定情况下的类快得多?

我有三种情况来测试类的相对性能,具有继承性和结构的类.这些将用于紧密循环,因此性能很重要.Dot产品被用作2D和3D几何中的许多算法的一部分,我在实际代码上运行了分析器.以下测试表明我见过的真实世界性能问题.

通过循环和点积的应用得到的结果为1亿次

ControlA 208 ms   ( class with inheritence )
ControlB 201 ms   ( class with no inheritence )
ControlC 85  ms   ( struct )
Run Code Online (Sandbox Code Playgroud)

测试正在运行,没有打开调试和优化.我的问题是,在这种情况下,类是什么导致它们如此缓慢?

我假设JIT仍然可以内联所有的调用,类或结构,所以实际上结果应该是相同的.请注意,如果我禁用优化,那么我的结果是相同的.

ControlA 3239
ControlB 3228
ControlC 3213
Run Code Online (Sandbox Code Playgroud)

如果重新运行测试,它们总是在彼此相差20ms内.

正在调查的课程

using System;
using System.Diagnostics;

public class PointControlA
{
    public double X
    {
        get;
        set;
    }

    public double Y
    {
        get;
        set;
    }

    public PointControlA(double x, double y)
    {
        X = x;
        Y = y;
    }
}

public class Point3ControlA : PointControlA
{
    public double …
Run Code Online (Sandbox Code Playgroud)

c# performance jit numerical-methods

12
推荐指数
1
解决办法
410
查看次数

抑制模块负载的JIT优化(仅限管理)

如果我在VS中运行发布版本但附加了调试器.所以我可以设置断点并研究优化的代码反汇编.通常,为了查看所有优化,我需要在没有附加调试器的情况下运行并分离到正在运行的进程.

取消选择Visual Studio中的"抑制模块加载(仅管理)JIT优化"开关是否足以带来相同的结果?"相同的结果"我的意思是:相同(优化)的机器指令,如果没有连接调试器就启动?

我听说JIT编译器只会使用所有优化选项,如果程序集是发布版本并且没有连接调试器.现在我想知道这个开关是否可以使我的调试/检查更容易?

.net c# jit compiler-optimization visual-studio

9
推荐指数
1
解决办法
1225
查看次数