[
]
ZhouSa.com-周飒博客 1. 结语
1.1. 论速度IO都是弟弟
我们都知道cpu比内存块,内存比硬盘块,硬盘比网络块,但究竟快多少呢?我们来列一下有个直观感受:
设备操作 | 通常耗时 |
---|---|
2.6Ghz主频的cpu执行指令 | 0.38ns |
一级缓存读取 | 0.5ns |
分支预测错误处理 | 5ns |
二级缓存读取 | 7ns |
互斥锁的加锁和解锁 | 25ns |
内存寻址 | 100ns |
CPU上下文切换(系统调用) | 1.5us |
在1Gbps的内网上传输2K的数据 | 20us |
SSD随机读取 | 150us |
从内存中读取1MB的连续数据 | 250us |
同一个数据中心网络上跑一个 | 0.5ms |
从SSD读取1MB的顺序数据 | 1ms |
磁盘寻址 | 10ms |
从磁盘读取1MB连续数据 | 20ms |
从世界上不同城市网络上走一个来回 | 150ms |
可以看到大致上cpu级别是ns级别,内存是us级别,内网传输,ssd,磁盘,外网都是ms级,而内网传输和ssd,磁盘,外网基本个差一个数量级.
1.2. python的异步接口还远未成熟
到2019年为止,python中语言级别的协程及其关键字已经3年了,三年时间这块的内容已经相当丰富,基本可以满足一般使用,但无论是标准库还是第三方库,离真正稳定可靠还有很长的路要走,我们可以看到各种benchmark中python的异步框架并不能达到其宣称的性能,一方面python原生的事件循环效率不高,另一方面也受其他比如log库的性能拖累.
但使用原生协程算是大势所趋,先学用着也没有什么大影响,真的在乎性能,有两种路径
- 使用其他编译型语言重写
- 使用cython重构
还没有评论,来说两句吧...