首页 > 解决方案 > 即使在使用 Parallel.Foreach 之后,批量创建对象也需要大量时间

问题描述

我正在尝试批量创建对象(> 4000),它需要超过 8 秒。

allrowslist<object[]>4000 条记录。

ConcurrentBag <data> lstdata = new ConcurrentBag <data>();

Parallel.ForEach(allRows, (row) => {
  lstdata.Add(new data() {
          Id = row["NB"],
              ColumnId = row["COLUMN_ID"]],
      Value = row["VALUE"]],
  });
});

请建议。

标签: c#objectconcurrencytask-parallel-libraryparallel.foreach

解决方案


由于需要锁,并行不太可能更快。

尝试使用可枚举的ctor

List<SimpleClass> simpleClassList = new List<SimpleClass>() { new SimpleClass(1, "bob"), new SimpleClass(2, "ken") };
var x = from t in simpleClassList
        select new SimpleClass (t.ID + 10, t.Name);
ConcurrentBag<SimpleClass> simpleClassCB = new ConcurrentBag<SimpleClass>(x);
foreach (var v in simpleClassCB)
{
    Debug.WriteLine($"{v.ID}  {v.Name}");
}

推荐阅读