【问题标题】:Why PLINQ is giving worse performance then LINQ Query?为什么 PLINQ 的性能比 LINQ Query 差?
【发布时间】: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;

【问题讨论】:

标签: c# plinq


【解决方案1】:

可能是因为 LINQ 版本将查询转换为 SQL(可能会或可能不会在服务器上并行运行),而 PLINQ 版本需要从数据库中检索所有内容,然后自行运行过滤和排序。

【讨论】:

    【解决方案2】:

    您在 AsParallel 之后进行过滤。因此,您正在阅读所有旋转线程和过滤的行。

    您可以通过 sql 配置文件确认这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2016-09-05
      • 2016-04-21
      相关资源
      最近更新 更多