C# 为什么不';我只是在没有调试的情况下运行性能基准测试,而不是;“热身”;密码?

C# 为什么不';我只是在没有调试的情况下运行性能基准测试,而不是;“热身”;密码?,c#,.net,C#,.net,我不太明白为什么你只是在没有安装调试程序的情况下运行你的程序,而不是在没有计时的情况下运行测试代码,然后在计时的情况下运行相同的代码。当然,这给了你一个更公平的测试,但它给了你一个绝对的基准,还是仅仅是衡量原始性能 您似乎不一定要测试性能,因为它将在真实环境中运行。在执行某些代码的最初几次,C#runtime将在后台对其进行优化—这称为“JIT”,或“即时编译”。因此,如果您正在测量的代码要重复多次,比如说,在一个24小时/24小时运行的循环中,那么您需要测量JIT完成后所需的时间,因为这是大部

我不太明白为什么你只是在没有安装调试程序的情况下运行你的程序,而不是在没有计时的情况下运行测试代码,然后在计时的情况下运行相同的代码。当然,这给了你一个更公平的测试,但它给了你一个绝对的基准,还是仅仅是衡量原始性能


您似乎不一定要测试性能,因为它将在真实环境中运行。

在执行某些代码的最初几次,C#runtime将在后台对其进行优化—这称为“JIT”,或“即时编译”。因此,如果您正在测量的代码要重复多次,比如说,在一个24小时/24小时运行的循环中,那么您需要测量JIT完成后所需的时间,因为这是大部分时间将要运行的时间。

请看这里,当附加调试程序时,运行时必须检查每一行代码,它是否被任何断点作为目标。并且可能会做更多的事情,导致开销,从而使结果变形。在度量事物时,您希望尽可能多地消除混淆因素。在加载程序集时,.NET运行时不是对所有内容都进行JIT吗?@millimoose这里解释了它的进步性。同样,这不是OP真正问的问题。嘿,至少我试过了。老实说,OP的问题并不十分清楚。