win 怎么看多线程是否执行效率高于单线程

2017-09-18 23:04:33 +08:00
 unicomcat

我的程序属于 IO 密集型,理论上使用多线程的话效率应该高。

有没有工具可以很直观的看出来跑同样的数据量,多线程比单线程要快多少。

除了单线程、多线程分开跑一边分别打印时间这种方式。

2485 次点击
所在节点    Python
7 条回复
hjc4869
2017-09-18 23:21:10 +08:00
是谁教你的 IO 密集型用多线程效率更高?
cheetah
2017-09-18 23:22:20 +08:00
如果是 web 应用的话可以用各种压测工具,如 ab,不是的话我也不知道了
wellsc
2017-09-18 23:44:39 +08:00
IO 密集型的话单线程的 callback 和协程并发都比多线程效率高,因为单线程不需要过多的关心线程的栈空间、调度成本、CPU 使用率等问题。。
changwei
2017-09-19 01:21:00 +08:00
打开 windows 自带的资源管理器或者任务管理器,然后观察 io,哪个硬盘或者网络 io 占的多就是哪个快。
leavic
2017-09-19 07:38:15 +08:00
@hjc4869 如果他只用 python 自带的库,multi processing 确实是会效率更高的,自带的库在 block 时会自动释放 GIL。当然,也只是比单纯的单线程高,更高的肯定是 coroutine。
nullcc
2017-09-19 08:49:16 +08:00
建议 LZ 复习一下操作系统中进程和线程知识
quadpixels
2017-09-19 09:14:47 +08:00
确实是依赖于负载类型的
就拿 RSTM 这个事务内存库中自带的性能测试来看,红黑树的并行度比哈希表要高一些:
如果开 4 个线程,红黑树大概有单线程 4 倍左右的性能
但是哈希表开 4 个线程,只有单线程 2 倍左右的性能
可能是访存与计算操作密集度之比导致的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/391806

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX