有没有人发现这个基本测试有任何问题?
var GC_MemoryStart = System.GC.GetTotalMemory(true);
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
var test = new InquiryServiceTypeData().GetActive(true);
stopWatch.Stop();
var GC_MemoryEnd = System.GC.GetTotalMemory(true);
arrayTotal[i] = (stopWatch.ElapsedTicks * 1000.0) / Stopwatch.Frequency;
size[i] = GC_MemoryEnd - GC_MemoryStart;
只是试图获得一般估计该方法运行的时间以及它使用的堆中的内存量。
Aka,一些测试使用数据集/数据表,一些使用列表,一些使用两者。
此代码在循环中抛出,以便我可以更改迭代次数。然后,我显示每种方法的平均时间和平均大小。
编辑:GetActive方法访问数据库并返回数据。我测量的不同方法以不同的方式处理返回的数据。
方法1 - 将数据返回到数据集,然后转换为对象列表。 方法2 - 返回一个datareader并转换为一个对象列表。 方法3 - 合并前两种方法。
该代码的原因是解决与同事的分歧。他认为我的代码是废话,因为datareader并转换为一个对象列表有很多新的'将负载放在堆上的语句。我认为他错了。所以我想向他展示指标,因为他没有听我的任何逻辑陈述。但你不能与数字争论。
答案 0 :(得分:4)
这很不错。
但是,你应该在任何时间之前调用该方法一次,这样你就不会最终计时JITter。
答案 1 :(得分:0)
我建议您使用ANTS Performance Profiler 6.3。
安装和使用非常简单。因此,您可以快速改进.NET代码。