我有一个C#应用程序,我正在测试3种方法来处理XML。
我读取了一串XML获取值,然后将其添加到自定义集合中。
我正在测试XMLDocument,XDocument和String操作以查找节点值,按顺序记录每个节点的开始和结束时间。
但是,如果我说混合顺序,我会报告不同的速度。此外,当我再次按下按钮再次执行测试时,最初最慢的按钮有时在后续测试中占用最少。
我确信这一切都与JIT和垃圾收集有关,但确定最快运行速度的最真实方法是什么。
我已经下载了EQATEC探查器,但我对它的使用感到很遗憾。
有人可以告诉我确定哪种方法运行最快的最佳方法。
由于
答案 0 :(得分:1)
可能值得尝试的另一个分析器是Slimtune。
答案 1 :(得分:1)
使用StopWatch测量时间时,每个方法是否足以使用一组样本输入?
答案 2 :(得分:1)
要记住的重点(Jon在上面的网站上注意到它,并且Eric Lippert喜欢在主题出现时提及它)是当你多次运行代码时,它只会被JIT给第一个时间,所以如果你想测量每种方法的真实差异,至少测量两次并比较第二次运行 - 我想这是你的订单转换的结果。
答案 3 :(得分:0)
答案 4 :(得分:0)
学习使用您拥有的工具:
http://www.eqatec.com/tools/profiler/guide
如果你得到不一致的结果,做科学的事情并制作控制案例:
答案 5 :(得分:0)
您可以使用Michael McMillian撰写的“使用c#的数据结构和算法”中的Timing类。
大致如下:
TimeSpan startingTime, duration;
GC.Collect();
GC.WaitForPendingFinalizers();
startingTime = Process.GetCurrentProcess().Threads[0].UserProcessorTime;
DoLengthyWork();
duration = Process.GetCurrentProcess.Threads(0).UserProcessorTime.Subtract(startingTime);