🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# swoole与golang相比有哪些优势 [TOC] ## 开发效率 * `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`性能问题