c# - 即使在使用 Parallel.Foreach 之后,批量创建对象也需要大量时间
问题描述
我正在尝试批量创建对象(> 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"]],
});
});
请建议。
解决方案
由于需要锁,并行不太可能更快。
尝试使用可枚举的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}");
}
推荐阅读
- r - 需要帮助使用 rworldmap 为绘图上的国家/地区添加名称
- powershell - 尽管更新了 ExecutionPolicy,但无法在 VSCode 中激活虚拟环境
- c++ - 当我运行程序时,我什么也得不到。只是给我我的 exe 应用程序,仅此而已。我如何解决它?
- python - ffmpeg 性能与数百次削减 (atrim)
- r - 达到 R 向量内存耗尽限制
- vue.js - Ionic 5 - 如何在点击事件中选择特定的离子芯片 (@ionic/vue)
- nginx - NGINX 使用 auth_request 检查多个端点
- python - 使用 PyQt 5 运行 Python 程序时没有响应
- java - 如何从 JLabel ImageIcon 获取绝对路径?
- flutter - Flutter Mobx 在 Dispose 时将 Store 重置为初始值