php yar swoole 比较,Hprose 和 Yar 的性能比较
之前总有人问我 Hprose 快,还是 Yar 快。这个问题我之前的回答都是,我没有做过测试,但我觉得 Yar 应该更快一些,毕竟他是鸟哥完全用纯 C 实现的。但这个答案好像并不能让大多数人满意。所以在被多人多次询问之后,昨晚我终于没忍住测试了一下,但是结果所反映出的并不是 Hprose 快,还是 Yar 快的问题。测试结果所能确定的问题只有一个,那就是在 Swoole 下跑的 Hprose 比在 Web 服务器上跑(比如 php-fpm 方式)更快。
下面我们先来列一下测试程序。
公共 API
api.php
define("SEX_UNKNOWN", 0);
define("SEX_MALE", 1);
define("SEX_FEMALE", 2);
define("SEX_INTERSEX", 3);
class User {
var $name;
var $sex;
var $birthday;
var $age;
var $married;
function __constructor() {}
static function newUser($name, $sex, $birthday, $age, $married) {
$user = new self();
$user->name = $name;
$user->sex = $sex;
$user->birthday = $birthday;
$user->age = $age;
$user->married = $married;
return $user;
}
}
class API {
public function hello($name) {
return "hello " . $name . "!";
}
public function getUserList() {
$userlist = array(
User::newUser("Amy", SEX_FEMALE, new DateTime("1983-12-03"), 26, true),
User::newUser("Bob", SEX_MALE, new DateTime("1989-06-12"), 20, false),
User::newUser("Chris", SEX_UNKNOWN, new DateTime("1980-03-08"), 29, true),
User::newUser("Alex", SEX_INTERSEX, new DateTime("1992-06-14"), 17, false)
);
return $userlist;
}
}
Hprose HTTP 服务器和客户端
hprose_server.php
include("Hprose.php");
include("api.php");
$server = new HproseHttpServer();
$server->addInstanceMethods(new API());
$server->start();
hprose_client.php
include("Hprose.php");
$client = new HproseHttpClient("http://127.0.0.1/hprose_server.php");
echo "
";
$t = microtime(true);
for ($i = 0; $i < 10000; $i++) $client->hello("world");
echo microtime(true) - $t;
echo "
";
$t = microtime(true);
for ($i = 0; $i < 10000; $i++) $client->getUserList();
echo microtime(true) - $t;
Yar HTTP 服务器和客户端
yar_server.php
include("api.php");
$service = new Yar_Server(new API());
$service->handle();
yar_client.php
$client = new Yar_Client("http://127.0.0.1/yar_server.php");
echo "
";
$t = microtime(true);
for ($i = 0; $i < 10000; $i++) $client->hello("world");
echo microtime(true) - $t;
echo "
";
$t = microtime(true);
for ($i = 0; $i < 10000; $i++) $client->getUserList();
echo microtime(true) - $t;
Hprose Swoole HTTP 服务器和客户端
hprose_swoole_http_server.php
include("Hprose.php");
include("api.php");
$server = new HproseSwooleServer("http://127.0.0.1:8080/");
$server->addInstanceMethods(new API());
$server->start();
hprose_swoole_http_client.php
include("Hprose.php");
$client = new HproseHttpClient("http://127.0.0.1:8080/");
echo "
";
$t = microtime(true);
for ($i = 0; $i < 10000; $i++) $client->hello("world");
echo microtime(true) - $t;
echo "
";
$t = microtime(true);
for ($i = 0; $i < 10000; $i++) $client->getUserList();
echo microtime(true) - $t;
Hprose Swoole TCP 服务器和客户端
hprose_swoole_tcp_server.php
include("Hprose.php");
include("api.php");
$server = new HproseSwooleServer("tcp://127.0.0.1:2015/");
$server->addInstanceMethods(new API());
$server->start();
hprose_swoole_tcp_client.php
include("Hprose.php");
$client = new HproseSwooleClient("tcp://127.0.0.1:2015");
echo "
";
$t = microtime(true);
for ($i = 0; $i < 10000; $i++) $client->hello("world");
echo microtime(true) - $t;
echo "
";
$t = microtime(true);
for ($i = 0; $i < 10000; $i++) $client->getUserList();
echo microtime(true) - $t;
测试结果
下面是测试结果:
服务器与客户端
hello
getUserList
Hprose Swoole TCP
2.0799078941345秒
3.4906399250031 秒
Hprose Swoole HTTP
2.9583330154419秒
4.2354850769043秒
Yar HTTP
3.8473629951477秒
5.1223559379578秒
Hprose HTTP
4.8670680522919秒
6.5057880878448秒
php yar swoole 比较,Hprose 和 Yar 的性能比较相关推荐
- php yar swoole 比较,syar:Swoole 实现的 Yar 服务
为何用swoole来实现 Yar server 历史代码使用了yar, 不想过多修改客户端代码 提升Yar服务端执行效率 学习swoole, yar(在此感谢laruence,rango及swoole ...
- ubuntu 安装yar和使用
可能你的安装 会出现一些依赖 一般可能是 缺少 m4 autoconf 鸟哥博客:http://www.laruence.com/2012/09/15/2779.html 安装yar 先安装m ...
- [Yar] yar安装与使用过程中遇到问题总结
yar安装与使用过程中遇到问题总结 Yar 简介 官方文档 yar安装 yar运行时的默认配置 yar常量 使用范例 遇到的问题 应用流程 Yar 简介 Yar 是一个轻量级, 高效的RPC框架, 它 ...
- php yar 扩展,php的基于yaf+yar+yac环境搭建
php项目基于yaf+yar+yac环境搭建 具体配置步骤(尽量缩短文字描述): 1.php的yaf扩展安装: ** pecl install yaf ** 将 extensio ...
- swoole(进程,线程)
进程 1.进程之间不共享任何状态 2.进程的调度由操作系统完成 3.每个进程都有自己独立的内存空间 4.进程间通讯主要是通过信号传递的方式来实现的,实现方式有多种,信号量.管道.事件等,任何一种方式的 ...
- rpc介绍,和PHP常用的rpc框架
什么是rpc框架 先回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 通常我们调用一个PHP中的方法,比如 ...
- php中流行的rpc框架有哪些?
什么是rpc框架 先回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 通常我们调用一个php中的方法,比如 ...
- rpc是什么?php中流行的rpc框架有哪些?
什么是rpc框架 先回答第一个问题:什么是RPC框架?如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 通常我们调用一个php中的方法,比如这 ...
- 中间件 rpc是什么?php中流行的中间件rpc框架有哪些
rpc是什么?php中流行的rpc框架有哪些. 更好的排版:https://www.zybuluo.com/phper/note/76641 什么是rpc框架 先回答第一个问题:什么是RPC框架? 如 ...
- [转]php中流行的rpc框架有哪些?
什么是rpc框架 先回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 通常我们调用一个php中的方法,比如 ...
最新文章
- gcc:undefined reference to 'std::cout'
- 楼市调控要“围堵”更要“疏通”
- Java中Arrays.toString ()打印二维数组及Array数组的常用操作
- iOS经典面试题之深入分析block相关高频面试题
- python list长度_python的入门阶段 编程思维100题 我跟罗志祥没关系
- Spring.NET 1.3.1 正式版已发布
- mysql主键long_MySQL主键设计
- android国籍组件,android组件化之路
- 【转】java编程思想第20章的注解例子用到的com.sun.mirror的jar包
- python中unicode函数_中文字符 unicode转utf-8函数 python实现
- python3入门基础语法总结_Python基础语法总结(3)
- 7. Document write() 方法
- win10设置打开闪退怎么办 电脑windows10设置打开闪退解决方法
- 社交网络分析中(SNA)的中心性(centrality) 度中心性(degree),接近中心性(closeness),中介中心性(betweenness)
- mysqld.exe 无法找到入口
- 数组对象查找某一个对象
- c 语言len函数,巧妙利用LEN、SUBSTITUTE函数,计算EXCEL单元格内某重复字符个数
- android 高光动画,分享AirDroid高光时刻:它是如何使我高效工作和生活的?
- 数据库逻辑设计之 三大范式 及 反范式化 优缺点
- [Unity3D]Unity3D游戏开发之粒子系统
热门文章
- 显卡对决nbsp;NVIDIAnbsp;GTnbsp;555Mnbsp;VS…
- 震网三代(CVE-2017-8464)
- MSCD software disk for win vista龙帝国vista 软件光盘合集
- struts2拦截器定义
- 【ember zigbee】第三章:ug103-02-fundamentals-zigbee 学习笔记(中)
- 《惢客创业日记》2021.07.25(周日)当生日遇上套路
- C# 通过api 下载sharepoint中的文件
- 发布和订阅业务交易事件库(BTE事件及函数)
- 计算机出现蓝屏怎么恢复,电脑蓝屏怎么解决,小编教你如何恢复正常
- C++使用Socks5协议进行代理上网(四)