并行计算Parallel
在C#中,并行Parallel和异步Async,都是有来提升应用性能,那看看Parallel的性能怎么样。
Demo是对1百万的数组进行赋值运算,用Benchmark进行测试,调用方式:BenchmarkRunner.Run<TestParallelDemo>();
public class TestParallelDemo
{
[Benchmark]
public int[] ParallelForDemo()
{
var array = new int[1_000_000];
Parallel.For(0, array.Length, i =>
{
array[i] = i;
});
return array;
}
[Benchmark]
public int[] ForDemo()
{
var array = new int[1_000_000];
for (var i = 0; i < array.Length; i++)
{
array[i] = i;
}
return array;
}
}
看一下测试中的表现:
Parallel.For并行运算时,8个CPU几乎占满,在拼命运算。
for时,只有一个CPU在高水位努力,其他CPU在划水。
看一下Benchmark跑出来的结果,Mean值 ,并行运算的耗时1.617ms,2.569ms,相差0.952ms,将近1个ms。
并行的前提是有多CPU核心,如果单CPU,或少CPU,在短运算中,不一定比非并行效果要好,因为并行也有数据分区,数据合并,协调类型等的消耗。如果应用是在物理机上,多核心,特别8,16,32核心,那就最好用并行计算了,如果是跑到docker里,那就小心使用,因为基于容器的部署,更多要的是横向服务级的扩展,而不是多CPU的高效使用。
想要更快更方便的了解相关知识,可以关注微信公众号
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2007-02-11 BulletDecorator
2007-02-11 Border