当前位置: 首页 > 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.hskmm.com/?act=detail&tid=29834

相关文章:

  • 2025.10.13——1橙
  • 基于高频电流探头的电磁兼容(EMI/EMC)测试与诊断技术方案
  • Spring 事务、循环依赖连环问
  • 20232327 2025-2026-1 《网络与系统攻防技术》实验一实验报告
  • 单挑市面上所有监控设备模拟器/可能是最好用的监控模拟器/支持onvif和28181协议/虚拟监控/桌面转监控/任意源转监控设备
  • 在Java 11中,如何处理被弃用的类或接口?
  • chmod只修改文件或者只修改目录权限
  • 每周资讯 | 腾讯《三角洲行动》周年庆登双榜TOP1;腾讯首款生活模拟游戏《粒粒的小人国》曝光 - 教程
  • .NET 自动依赖注入神器
  • VLA技术论文阅读 - 详解
  • 深入解析:246-基于Django的美食菜谱数据分析推荐系统
  • PhotoShop网页版在线为图片加文字,制作个性海报教程
  • 简单高效的SQL注入测试方法:Break Repair技巧详解
  • display ip interface brief 概念及题目 - 指南
  • VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 HPE 慧与 定制版
  • VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 Lenovo 联想 定制版
  • 当AI开始“通感”:诗词创作中的灵性涌现
  • VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 Dell 戴尔 定制版
  • 【GitHub每日速递 251013】SurfSense:可定制AI研究神器,连接多源知识,功能超丰富!
  • FileZilla Client升级之后报了一个错误queue.sqlite3文件保存失败
  • tap issue
  • 通配符SSL证书价格对比 iTrustSSL与RapidSSL哪个更有优势?
  • 降低网络保险成本的实用技巧与网络安全实践
  • 自动评估对话质量的AI技术突破
  • 4.2 基于模型增强的无模型强化学习(Model-based Augmented Model-free RL)
  • 乐理 -07 和弦, 和声
  • 4.1 基于模型的强化学习(Model-based RL)
  • 3.8 最大熵强化学习(Maximum Entropy RL, SAC)
  • 乐理 -06 和弦, 和声
  • 3.7 带经验回放的演员–评论家算法(Actor-Critic with Experience Replay, ACER)