有人发现这个基本测试有什么问题吗?
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 - 返回数据读取器并转换为对象列表。 方法 3 - 前两种方法的合并。
代码的原因是为了解决与同事的分歧。他认为我的代码是垃圾,因为数据读取器和转换为对象列表有大量的"new"语句,这会给堆带来负担。我争辩说他错了。所以我想给他看指标,因为他没有听我的任何逻辑陈述。但是,您不能与数字争论。
最佳答案
这还不错。
但是,您应该在计时之前调用该方法一次,这样您就不会结束对 JITter 的计时。
关于c# - 检查c#方法的速度和内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8342464/