入门指引 Server Client Process AsyncIO Memory HttpServer WebSocket 高级 其他

发布于 2015-08-09 09:44:02 | 219 次阅读 | 评论: 0 | 来源: 网络整理

开发效率

  • go语言是本质上是静态语言,开发效率不高,更适合底层软件的开发
  • swoole基于php语言,而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扩展实现可以解决性能问题
PHP7将增加JIT支持,在密集计算方面会有很大改善

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务