线程小测试

线程小测试:

在初步学习了线程相关的知识后,利用线程跑一段代码,看看其花费的时间与一般我们编译代码所使用的时间有何差别?
下面是我们对快排进行时间测试:
由于数据过小看不出来差别,那么直接生成十万随机数来进行排序
在这里插入图片描述
在这里插入图片描述
结果用了1.158s,我们继续用该快排代码调用线程再跑一遍

在这里插入图片描述
我们首先先开辟一个线程来测试:

在这里插入图片描述
我们发现调用线程跑代码所用的时间是要比直接跑代码时间要长几十倍

不妨我们多开辟几个线程来继续测试:

线程数时间
127.692s
210.726s
316.463s
422.035s
527.652s

我们此时会发现一个问题,为什么测试的时间不是随着线程数增大而增大呢,反而线程数越多时间反而变长了呢?我们先大概了解一下单线程和多线程。

  • 单线程:单线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。

  • 多线程:多线程程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行。

  • 总结:多线程一般多用于耗时或大量占用处理器的任务阻塞用户界面操作,而对于快排而言只是对于将数组中的元素做移动,而这样就大材小用,调用线程所用的时间反而会比一般执行代码所用的时间长。因为多线程的情况下,CPU还要花时间去维护,CPU处理各线程的请求时在线程间的切换也要花时间,所以一般情况下是可以不用多线程的,用了有时反而会得不偿失。大多情况下,要用到多线程的主要是需要处理大量的IO操作时或处理的情况需要花大量的时间等等,比如:读写文件、视频图像的采集、处理、显示、保存等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值