如何计算网络服务的时间

时间:2012-10-29 19:08:15

标签: c# asp.net iis-7

这将是我之前做的一个跟进问题: Stopwatch different timing why?

我在网络服务中使用秒表,只知道我需要编程的一些方法的时间:( C#中的程序,使用ASP.NET)

Stopwatch swK=new Stopwatch();
swK.Start();
do
{               
method1(intvar1,intvar2,intvar3);
var_1=method2(intvar1,doublevar1, doublevar2);
flag= Compara (doublevar3,intvar1,doublevar4);
}
while (flag != 1);
swK.Stop();
double tim2 = swK.Elapsed.TotalMilliseconds;

这样,tim2将有时间以毫秒为单位从'while'中的所有方法中获取;我不理解的是第一次它仍然花费很多时间,例如第一次它需要10毫秒下次它只花1毫秒,

所以我的问题是,如果我只是在第一次花费这么多时间来处理某些方法的过程的时间吗?是因为大会,jiiter等......

也是他们另一种衡量我的方法的方法,因为其他因素影响了吗?

2 个答案:

答案 0 :(得分:3)

在.NET中,有很多东西第一次需要一段时间,并且在后续操作上会更快。连接到数据库,连接到Web服务,附加到文件系统等等。甚至可能是JIT编译的问题,特别是如果您正在更改代码并重新运行它。甚至只是how the runtime is allocating and deallocating objects

幕后有很多“管道”,你甚至不需要考虑作为.NET开发人员。还有像Connection Pooling这样的优化可以在后续尝试中加速,而你甚至没有意识到这一点。

当你提出问题时,它可能是任何类型的东西。我们不一定在这里肯定地回答这个问题。我们不知道这些方法内部会发生什么,但希望上面对可能正在发生的事情有所了解。

Toi将其缩小,在Visual Studio中(如果您的版本正确),可以使用profiling来查找瓶颈。

答案 1 :(得分:0)

第一次运行它需要很长时间的最可能原因是Just In Time编译。在Web服务的情况下,另一个原因是网络延迟。通常,衡量程序所需时间的最佳方法是采取多种措施(比方说10)并得到它们的平均值,还有其他统计方法,但这取决于你想要得到的软化程度。这个措施。