当前位置: 首页 > news >正文

献丑贴:Task.Run中foreach优化

有一个场景:

在Task.Run中循环执行N个任务,原来的写法:

var task = Task.Run(async () =>{int i = 0;foreach (var item in tables){i++;await writefileAsync(namespace1, item, showProcess);}});_ = task.ContinueWith(t => { stopwatch.Stop(); MessageBox.Show($"代码生成完毕!{stopwatch.Elapsed}"); });

这种写法其实最大的问题是,既然用了taks.run,而又手动进行循环顺序处理,其实并没有发挥出task的威力来,因为task是支持多个任务并行处理的,改用并行处理:

 var tasks = tables.Select(item => writefileAsync(namespace1, item, showProcess));await Task.WhenAll(tasks);stopwatch.Stop(); MessageBox.Show($"代码生成完毕!{stopwatch.Elapsed}");

经过对比发现,性能提升明显(单次测试处理时间:0.9s->0.4s)!

http://www.zskr.cn/news/19906.html

相关文章:

  • 完整教程:应用部署(后端)
  • 2025.10.13——1橙
  • Spring 事务、循环依赖连环问
  • 完整教程:OSPF LSA/ 路由种类
  • 单挑市面上所有监控设备模拟器/可能是最好用的监控模拟器/支持onvif和28181协议/虚拟监控/桌面转监控/任意源转监控设备
  • 在Java 11中,如何处理被弃用的类或接口?
  • 每周资讯 | 腾讯《三角洲行动》周年庆登双榜TOP1;腾讯首款生活模拟游戏《粒粒的小人国》曝光 - 教程
  • .NET 自动依赖注入神器
  • VLA技术论文阅读 - 详解
  • display ip interface brief 概念及题目 - 指南
  • 通配符SSL证书价格对比 iTrustSSL与RapidSSL哪个更有优势?
  • 乐理 -07 和弦, 和声
  • 4.1 基于模型的强化学习(Model-based RL)
  • 3.8 最大熵强化学习(Maximum Entropy RL, SAC)
  • 3.5 自然梯度(Natural Gradients)
  • 乐理 -06 相对音感 绝对音感
  • Presto
  • Hadoop--HDFS-HA高可用
  • 10月——算法竞赛回坑杂记
  • Redis知识点汇总
  • 缓存和数据库数据的一致性
  • 02 | 在环境中使用Airsim插件
  • 「2025 高一上学期笔记 / 日记」
  • 10.12总结
  • docker部署doris
  • ES客户端8版本与ES服务端7版本的兼容问题
  • 乐理 -04 打拍子
  • 开源软件站
  • 1011
  • kettle插件-dm数据库插件,解决kettle9.X版本无法连接数据库资源库问题