Task怎么提高异步执行效率
Task怎么提高异步执行效率
本篇内容介绍了“Task怎么提高异步执行效率”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
async Task 语法糖出来后,异步编程变得非常简单,适合需要耗费较长时间的任务。
有些小伙伴使用后可能会非常疑惑,使用异步和同步,在耗时上几乎没有差别。
下面我们看一个例子,场景是需要调用多个第三方的WebApi,分别是获取名称、年龄、性别,由于网络环境等原因,api响应时间可能会接近1秒
publicasyncTaskTest(){varsw=newStopwatch();sw.Start();varuserName=awaitGetUserNameAsync();varuserAge=awaitGetUserAgeAsync();varuserSex=awaitGetUserSexAsync();sw.Stop();varts=sw.Elapsed;Console.WriteLine($"总共耗时:{ts.TotalMilliseconds}ms");}privateasyncTask
运行后发现,这个时间2秒多,这用户体验肯定是无法忍受的
导致这样结果的原因是每次进行异步调用的时候,都在异步函数前加上了 await ,对于单单这个过程来说,其实相当于同步,等待直到结果返回,每个异步函数都await,时间自然就叠加了,为了解决这个问题,使用一个小技巧,可以将代码改成下面这样
publicasyncTaskTest(){varsw=newStopwatch();sw.Start();varuserNameTask=GetUserNameAsync();varuserAgeTask=GetUserAgeAsync();varuserSexTask=GetUserSexAsync();varuserName=awaituserNameTask;varuserAge=awaituserAgeTask;varuserSex=awaituserSexTask;sw.Stop();varts=sw.Elapsed;Console.WriteLine($"总共耗时:{ts.TotalMilliseconds}ms");}privateasyncTask
这次运行的总耗时,就是3个异步中,耗时最长那个GetUserSexAsync
为什么会这样呢,这个小技巧的关键是这里,当执行到异步函数的时候,不加 await,不进行等待,让这些任务乖乖在别的线程的执行,当需要用到他们的时候,再去等待返回值,所以时间上不会进行叠加,哪个最长,总耗时就是哪个
varuserNameTask=GetUserNameAsync();varuserAgeTask=GetUserAgeAsync();varuserSexTask=GetUserSexAsync();varuserName=awaituserNameTask;varuserAge=awaituserAgeTask;varuserSex=awaituserSexTask;
“Task怎么提高异步执行效率”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!
推荐阅读
-
Web应用从零开始,初学者友好型开发教程
-
容器化最佳实践:Docker 与 Kubernetes 在微服务架构中的协同设计
-
AWS Cloud9 使用攻略:云端 IDE 如何无缝集成 Lambda 与 S3 服务?
-
Heroku vs AWS Elastic Beanstalk:快速部署 Web 应用的平台对比
-
Kubernetes 集群部署避坑:资源调度、服务发现与滚动更新策略
-
Docker 镜像优化指南:分层构建、瘦身技巧与多阶段编译实践
-
Postman 接口测试全流程:从 API 设计到自动化测试脚本编写
-
pytest 框架进阶:自定义 fixture、插件开发与持续集成集成方案
-
JUnit 5 新特性:参数化测试、扩展模型与微服务测试实践
-
Chrome DevTools 性能分析:FPS 监控、内存快照与网络请求优化指南