
我的程序属于 IO 密集型,理论上使用多线程的话效率应该高。
有没有工具可以很直观的看出来跑同样的数据量,多线程比单线程要快多少。
除了单线程、多线程分开跑一边分别打印时间这种方式。
1 hjc4869 2017 年 9 月 18 日 via Android 是谁教你的 IO 密集型用多线程效率更高? |
2 cheetah 2017 年 9 月 18 日 如果是 web 应用的话可以用各种压测工具,如 ab,不是的话我也不知道了 |
3 wellsc 2017 年 9 月 18 日 IO 密集型的话单线程的 callback 和协程并发都比多线程效率高,因为单线程不需要过多的关心线程的栈空间、调度成本、CPU 使用率等问题。。 |
4 changwei 2017 年 9 月 19 日 via Android 打开 windows 自带的资源管理器或者任务管理器,然后观察 io,哪个硬盘或者网络 io 占的多就是哪个快。 |
5 leavic 2017 年 9 月 19 日 @hjc4869 如果他只用 python 自带的库,multi processing 确实是会效率更高的,自带的库在 block 时会自动释放 GIL。当然,也只是比单纯的单线程高,更高的肯定是 coroutine。 |
6 nullcc 2017 年 9 月 19 日 建议 LZ 复习一下操作系统中进程和线程知识 |
7 quadpixels 2017 年 9 月 19 日 确实是依赖于负载类型的 就拿 RSTM 这个事务内存库中自带的性能测试来看,红黑树的并行度比哈希表要高一些: 如果开 4 个线程,红黑树大概有单线程 4 倍左右的性能 但是哈希表开 4 个线程,只有单线程 2 倍左右的性能 可能是访存与计算操作密集度之比导致的 |