Массовое создание объектов занимает много времени даже после использования Parallel.Foreach - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь создать объекты массово (> 4000), это занимает более 8 секунд.

allrows - list<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"]],
  });
});

Пожалуйста, предложите.

1 Ответ

0 голосов
/ 16 мая 2018

Параллель вряд ли будет идти быстрее, так как нужно брать блокировки.

Попробуйте использовать перечисляемый 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}");
}
...