【发布时间】:2015-04-01 06:30:46
【问题描述】:
我正在尝试理解 PLINQ。因此,为此,我正在查询其中包含 102915 个产品的数据库。
但令人震惊的是,我看到 PLINQ 需要 18 秒,而普通查询只需要 4 秒。为了理解,我已经阅读了这篇文章,PLINQ Performs Worse Than Usual LINQ。 但是,我还是不明白为什么要花这么多秒。
为了移除开销,我在 PLINQ 中移除了 .order(m.sku),但它仍然给出了相同的结果。这里是 LINQ 和 PLINQ 版本的代码。
PLINQ 版本
shootersEntities model = new shootersEntities();
var IsOnline = cBOnline.Checked;
var IsDeleted = cBDeleted.Checked;
Stopwatch s = new Stopwatch();
s.Start();
var p = from m in model.products.AsParallel()
where ((m.productOnline == IsOnline) || (m.deleted == IsDeleted))
select new { m.sku, m.productCode, m.quantity };
var list = p.ToList();
s.Stop();
MessageBox.Show((s.ElapsedMilliseconds / 1000).ToString());
dataGridView1.DataSource = list;
LINQ 版本
shootersEntities model = new shootersEntities();
var IsOnline = cBOnline.Checked;
var IsDeleted = cBDeleted.Checked;
Stopwatch s = new Stopwatch();
s.Start();
var p = from m in model.products
where ((m.productOnline == IsOnline) || (m.deleted == IsDeleted))
select new { m.sku, m.productCode, m.quantity };
var list = p.ToList();
s.Stop();
MessageBox.Show((s.ElapsedMilliseconds / 1000).ToString());
dataGridView1.DataSource = list;
【问题讨论】:
-
收藏品有多少?它们长什么样子?
-
albahari.com/threading/part5.aspx - 这个链接是你阅读 PLINQ 使用指南的链接。