C# 方案执行情况

C# 方案执行情况,c#,performance,optimization,C#,Performance,Optimization,我有一个特定的对象,它非常忙于从外部源访问数据,因此需要一段时间来实例化。我是否可以测量方法调用在其构造函数中的时间,以查看哪个方法真正造成了损害 谢谢我喜欢用它来快速复习,请参阅以获取一些信息 但是如果可以,可以尝试使用类来测量构造函数中的时间 例如: public Class1() { Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); // Do your stuff here... sto

我有一个特定的对象,它非常忙于从外部源访问数据,因此需要一段时间来实例化。我是否可以测量方法调用在其构造函数中的时间,以查看哪个方法真正造成了损害

谢谢

我喜欢用它来快速复习,请参阅以获取一些信息

但是如果可以,可以尝试使用类来测量构造函数中的时间

例如:

public Class1()
{
    Stopwatch stopWatch = new Stopwatch();
    stopWatch.Start();

    // Do your stuff here...

    stopWatch.Stop();

    // Format and display the TimeSpan value.
    string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
        ts.Hours, ts.Minutes, ts.Seconds,
        ts.Milliseconds / 10);
    Console.WriteLine(elapsedTime, "RunTime");
}

正如其他人所说,使用秒表类。但是,使用此方法的一个好方法是在启动秒表之前运行一次测试过程,以获得所有的JITted、cached等。然后在timed部分中,运行测试1000次以获得平均值。将整个过程重复几次以获得平均值,因为时间总是可变的。

您可以使用Visual Studio中的性能工具(如果您有正确的版本)。这样,您就不需要编写代码,而且还可以更好地指出耗时的方法。

如果您想了解这些方法需要多长时间,这是免费的。我用它来达到这个目的


由于您提到了数据访问,您可能需要查看sql profiler(假设使用MS sql Server)。

请注意,您应该始终使用在发布模式下编译的程序进行性能测试。这里有很多关于堆栈溢出的问题,证明这不是常识。释放模式通常不会改变数据访问的执行时间。