Swoole 协程的思考-执行耗时
测试
情况一:常规执行
1 | for ($i = 0; $i < 4; $i ++) { |
输出
1 | root@dd42237ba4ed:/data/www/demo/php/swoole/co# time php time.php |
情况二:单个协程执行,阻塞
1 | go(function() { |
输出
1 | 0::1595599971.73 |
情况三:单个协程执行,非阻塞
1 | go(function() { |
输出
1 | end... |
情况四:多个协程执行,阻塞
1 | for ($i = 0; $i < 4; $i ++) { |
输出
1 | 0::1595600362.917 |
情况五:多个协程执行,非阻塞
1 | for ($i = 0; $i < 4; $i ++) { |
输出
1 | end... |
总结
- 单个协程的与常规处理性能无太大差异
- 在多个协程下,性能提升更明显
- 在多个协程下,需内部为非阻塞代码,性能提升才有效;否则与常规性能无异
- 个人理解(参考):
- 多个协程下,如非阻塞逻辑,协程会让出控制权,但不影响非阻塞代码的执行
- 多协程下处理下,各协程的处理顺序不可控
参考文档
- 综合解释swoole的协程原理:https://blog.csdn.net/qq_16059847/article/details/90792888