【发布时间】:2010-12-09 21:40:27
【问题描述】:
我用两种方法填充了2个dataGridView:
1) Lambda 表达式:
protected void FillLamdaMethod()
{
Stopwatch sw = Stopwatch.StartNew();
using (eCommerceContext ctx = new eCommerceContext())
{
List<table_bilgisayar> listBilgisayar = new List<table_bilgisayar>();
listBilgisayar = ctx.table_bilgisayar.ToList();
dataGridViewLamda.DataSource = listBilgisayar;//qry.AsEnumerable();
}
sw.Stop();
lblLamdaResult.Text = String.Format("Time used (float): {0} ms",sw.Elapsed.TotalMilliseconds)+Environment.NewLine;
lblLamdaResult.Text+=String.Format("Time used (rounded): {0} ms", sw.ElapsedMilliseconds);
}
2)Linq方法:
protected void FillClassicMethod()
{
Stopwatch sw = Stopwatch.StartNew();
using (eCommerceContext ctx = new eCommerceContext())
{
List<table_bilgisayar> listBilgisayar = new List<table_bilgisayar>();
listBilgisayar =(from q in ctx.table_bilgisayar select q).ToList();
dataGridViewClasicLinq.DataSource = listBilgisayar;//(from q in ctx.table_bilgisayar select q.model).ToList();
}
sw.Stop();
lblClassicResult.Text = String.Format("Time used (float): {0} ms", sw.Elapsed.TotalMilliseconds)+Environment.NewLine;
lblClassicResult.Text += String.Format("Time used (rounded): {0} ms", sw.ElapsedMilliseconds);
}
我有 2 个重要问题
1)这种秒表方法是正确的还是足够的,或者有没有更好的方法来计算性能?
2)这次起来;我知道 lambda 表达式比经典 linq 更快(来自表中的 x 等......)但测试结果令人惊讶:
1) Lambda 方法:867 毫秒
2) Linq 方法:39 毫秒
这个结果正确吗?我想它一定是相反的......
还可以单击 fillButton 来调用此方法。性能结果愚蠢地改变。我认为这很疯狂。 867 ms 第二次点击结果 56 ms 第三次点击 45 ms....
【问题讨论】:
-
你是在一个接一个运行这些吗?您的结果是否受到 JIT 的影响?您的数据源是否第二次从缓存中提供结果?
标签: c# lambda linq-to-objects performancecounter stopwatch