gpt4 book ai didi

c# - 为什么 .NET 线程的性能不如单独的 .NET 进程?

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:19 24 4
gpt4 key购买 nike

最近我一直在观察一个有趣的现象,在我基于它重新设计我的整个软件架构之前,我想知道为什么会发生这种情况,以及是否有可能使线程性能与进程性能相提并论。

一般来说,任务就是下载一定的数据。如果我们用 6 个线程创建一个进程,基于 Parallel 库,下载大约需要 10 秒。

但是,如果我们创建 6 个进程,每个进程都是单线程的,并下载相同的数据,整个过程将只需要 6 秒左右。

这些数字经过彻底验证并具有统计意义,因此请将其视为理所当然。

该观察结果适用于大量(数百次试验)数据集,而且我没有观察到与此行为有任何偏差。

基本上,问题是,为什么非同步多线程进程比具有完全相同工作代码的几个独立进程慢,如何解决?

提前致谢!

注意:我读过类似的问题,但答案并不令人满意和实用。

最佳答案

我的猜测与 svick 的猜测相同:您可能遇到了运行时插入的某种瓶颈。

一般情况下,您可以使用Fiddler或Wireshark之​​类的工具来查看10次下载的交错情况。在您的情况下,我希望任何时候只有两个事件,并且一旦一个完成,另一个将立即开始。

在你去改变设置之前,你应该明白它为什么在那里。它作为建议的客户端行为写入 HTTP 规范,以免服务器不堪重负。如果您的代码要分发到数百/数千/数百万台机器,您应该考虑每个客户端同时下载 10 个的影响。

关于c# - 为什么 .NET 线程的性能不如单独的 .NET 进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10870016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com