本书未发布

swoole 与 golang 相比有哪些优势

为了更好的阅读体验,将文档从 Swoole 官方文档 搬运过来。内容比较多,我会慢慢搬运过来,也欢迎大家以提交改进的方式一起帮助我。

开发效率

Go语言是本质上是静态语言,开发效率稍差,但性能更强,更适合底层软件的开发
Swoole使用 PHP 语言,动态脚本语言,开发效率最佳,更适合应用软件的开发

IO 模型

Go语言使用单线程eventloop处理 IO 事件,多线程实现协程调度,执行用户层代码
swoole使用多线程eventloop 处理IO事件,多进程执行用户层 php 代码
Go对与 IO 事件的处理是单线程的,无法利用多核,吞吐量稍弱于 swoole
在实际的TCP/UDP密集 IO 压测中,swoole表现要稍优于 go

Go协程(goroutine)是运行在多线程上的,线程可以共享堆栈和文件描述符,功能更强大,在实现连接池、并发库方面更有优势。额外的带来的一个问题是,存在数据同步问题,需要用户自行考虑加锁。

Swoole的用户代码运行在多进程环境,无需考虑加锁问题。但无法直接访问内存和资源。需要借助Task进程实现中转。

语言性能

Go语言是静态编译的,语言本身的性能大大超过 PHP,密集计算更有优势
PHP 是动态解释执行的,语言性能较差,不适合密集计算程序
将密集计算、大量调用的代码使用C扩展实现可以解决部分 PHP 性能问题

本文章首发在 LearnKu.com 网站上。
上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~