首页 新闻 会员 周边

关于async对webapi性能影响的疑问(asp.net core3) -- 请教大神

0
悬赏园豆:20 [已解决问题] 解决于 2020-10-19 17:22

我对action是否采用异步模式做了个小测试,结果是不使用异步模式的反而速度快一些。

具体问题请看文章 https://www.cnblogs.com/honghuamin/p/13754225.html

Simple is best的主页 Simple is best | 初学一级 | 园豆:20
提问于:2020-09-30 14:04
< >
分享
最佳答案
0

不能简单的认为async就一定能提升性能
https://zhuanlan.zhihu.com/p/216526486?utm_source=wechat_session

另外,.net core的性能提升体现在多个方面
https://www.cnblogs.com/yswenli/articles/9060161.html

收获园豆:20
E行者 | 小虾三级 |园豆:1761 | 2020-09-30 15:28
其他回答(6)
0

看实际情况。不然IIS为什么给你设置线程数。这个根据任务情况(如长任务还是短任务),硬件情况(CPU核心数,线程支持情况)。就好比都知道TCP连接开销大,那为什么html要分成多个文件,文件分多还是分少好——都是根据自己的情况测试调整。

花飘水流兮 | 园豆:13560 (专家六级) | 2020-09-30 14:23
0

这个东西并不会提升单次调用的性能,只是增加了线程的利用率,好像之前有人问过,还是站长回答的,一时找不到那个答案了。

会长 | 园豆:12401 (专家六级) | 2020-09-30 15:46
0
dudu | 园豆:30994 (高人七级) | 2020-09-30 17:25
0

异步的目的是降低性能提高吞吐量

56180825 | 园豆:1756 (小虾三级) | 2020-09-30 19:32
0

在软件,或者现实世界中,优化或者更好的方法,有时候是通过更慢的方法来实现的。
举个栗子,Progressbar 通过让原来可以在10秒内完成的工作,变成11秒或者12秒完成。

异步方法从来都不是快的方法,只是“好莱坞法则”, Fire, and forget, we will call you.

你让小李帮你去楼下买杯奶茶,同步就是你等着奶茶送到不做其他事,异步就是你交代完小李,然后你可以去干其他事,而买奶茶这件事,不会因为同步或者异步变快或者变慢,至于为啥慢呢,原因是为了实现异步需要做一些其他的工作。
你理解不到等待或者错误的理解等待这件事,是因为IIS本身就是多线程请求的,不存在UI主线程这么一件事,如果你做一些Winform /WPF /UWP方面的编程,可能可以更好的理解 Await。

爱编程的大叔 | 园豆:30839 (高人七级) | 2020-10-01 10:37
0

首先你的具体案例里是否有一些IO的处理,比如读写数据库,比如你有100行代码,第一行就是是读写数据库的,那么不是异步的时候,你就需要等到数据库IO操作完毕再运行下面99行。
可能99行代码里 第50行要用到IO处理的结果,那么如果用了异步第一行运行的时候 ,第二行到50行就并行运行了,
然后50行代码等io的结果后再运行下面代码。

还有新开线程也是要资源的,当你的并发量不高的时候,可能你还会感觉慢,就和数据库加了索引是为了表数据量级大的时候更快,如果数据量少,不会有明显的差距的

Benjamin杰明 | 园豆:263 (菜鸟二级) | 2020-10-07 10:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册