多线程也不一定比单线程快

本文探讨了并发与并行的区别,并指出多线程并不总是比单线程快。由于线程切换和上下文切换的开销,以及CPU资源的共享,有时单线程在特定场景下可能更优。通过举例说明,当并发线程数量较少时,线程间的切换成本可能导致多线程表现不如单线程。
摘要由CSDN通过智能技术生成

并发 和 并行 的区别

推荐阅读:https://www.zhihu.com/question/33515481

并发:有处理多个任务的能力,不一定要同时。

并行:有同时处理多个任务的能力。

 

多线程似乎一直给我们这样的印象就是多线程比单线程快,其实这是一个伪命题.事无绝对,多线程有时候确实比单线程快,但也有很多时候没有单线程那么快. 首先简单区分一下并发性(concurrency)和并行性(parallel).并行是说同一时刻有多条命令在多个处理器上同时执行.并发是说同一时刻只有一条指令执行,只不过进程(线程)指令在CPU中快速轮换,速度极快,给人看起来就是”同时运行”的印象,实际上同一时刻只有一条指令进行. 但实际上如果我们在一个应用程序中使用了多线程,线程之间的轮换以及上下文切换是需要花费很多时间的,这样的话当我们执行类似循环之类的操作的时候,是不是就意味着单线程一定会比多线程快呢(因为单线程的执行没有线程切换的时间消耗),看下面一段代码(出自<<Java并发编程的艺术>>)

public class ConcurrencyTest {
    private 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多线程一定单线程。实际上,多线程的效率取决于任务的性质和计算资源的分配情况。在某些情况下,多线程可以显著提高代码的效率,例如在IO密集型任务(如网络爬虫)中。因为在这种情况下,线程可以在等待IO操作完成时执行其他任务,从而充分利用CPU资源。然而,在CPU密集型任务(如数据分析、机器学习、深度学习)中,多线程的效率可能会略低于单线程。这是因为多线程会引入上下文切换的开销,并且在CPU资源有限的情况下,多个线程之间的竞争可能会导致性能下降。因此,在数据领域中,并不是一定要使用多线程来提高效率,而是可以通过提升计算能力(如使用GPU、TPU)来提高计算效率。\[3\] #### 引用[.reference_title] - *1* [多线程一定单线程吗](https://blog.csdn.net/qq_44761854/article/details/121810775)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [多线程也不一定单线程](https://blog.csdn.net/anshaobiao6449/article/details/101121342)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [多线程单线程,是真的吗?](https://blog.csdn.net/weixin_39800971/article/details/114423692)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值