Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 点跟踪和性能分析?_C#_Performance_Dottrace - Fatal编程技术网

C# 点跟踪和性能分析?

C# 点跟踪和性能分析?,c#,performance,dottrace,C#,Performance,Dottrace,我最近重新编写了我的文件格式编写库。我意识到我的代码凌乱不堪,使一切变得过于复杂,而且通常很难维护 因此,我的新图书馆更加有序和干净。我意识到我在旧库中完成任务的许多方法比它需要的复杂得多,所以我希望我的新代码会快得多 嗯,不完全是这样。首先,我在.Net框架中使用Stopwatch类测试了性能。我的旧库速度一直很快,这让我感到震惊,因为有太多的改进和优化 然后,我使用dotTrace性能分析器测试了这两种性能。正如所料,我的新库速度更快——大约快了2倍!我的旧库测得62毫秒,我的新库测得28毫

我最近重新编写了我的文件格式编写库。我意识到我的代码凌乱不堪,使一切变得过于复杂,而且通常很难维护

因此,我的新图书馆更加有序和干净。我意识到我在旧库中完成任务的许多方法比它需要的复杂得多,所以我希望我的新代码会快得多

嗯,不完全是这样。首先,我在.Net框架中使用Stopwatch类测试了性能。我的旧库速度一直很快,这让我感到震惊,因为有太多的改进和优化

然后,我使用dotTrace性能分析器测试了这两种性能。正如所料,我的新库速度更快——大约快了2倍!我的旧库测得62毫秒,我的新库测得28毫秒

所以我不确定到底发生了什么。在Visual Studio中,我的新库速度要慢得多-事实上,它非常不一致,时间范围从00::00::00.042到00::00::00.351

有人知道为什么会这样吗?dotTrace说它快2倍,秒表说它慢2-4倍

谢谢大家的帮助

亚历克斯 编辑:

这两个库的代码是相同的,都只是引用了新库和旧库。这是在控制台应用程序上测试的:

class Program {
    static void Main(string[] args) {
        Stopwatch sw = new Stopwatch();
        sw.Start();

        Textstring txt = new Textstring("TestText");
        txt.Text = "This is a test textstring.";
        RdwFile f = new RdwFile("Test");
        f.Add(txt);
        f.Save();

        sw.Stop();

        Console.WriteLine(sw.Elapsed.ToString());

        Console.ReadKey();
    }
};

我们需要看看如何使用秒表。例如,您是否先运行它以便正确地进行JIT,然后再运行一次?我不知道dotTrace是否度量JIT时间。我想不会。这么短的测试不可能取得好的结果。编写一个测试,多次练习代码并运行几秒钟并进行比较。对于Stopwatch方法和dotTrace探查器,我分别运行了20次测试。旧库测量到秒表的平均值为00::00::00.034,点跟踪配置文件类型:采样,测量:线程的平均值为63。我的新库测得的平均值为00::00::00.08,但秒表的测量范围确实在00::00::00.04到00::00::00.3之间。它在dotTrace中测量到的平均时间为30毫秒。@vcsjones根据dotTrace,新库的运行速度仍然是旧库的2倍,它应该仍然比旧库快,而不是慢。您还可以尝试其他探查器与dotTrace进行比较,以查看它们是否一致。VisualStudio分析器、ANTS性能分析器、YourKit以及其他一些工具。尽管如此,请确保模拟分析选项类型的计时,即行级别、采样。我假设您没有在VS中进行调试,并且应该为此查看发布/优化的代码。