PHP7 RC7 Release对比PHP5.6快速排序20000数据性能体验以及新语法尝鲜
2015-11-22 22:59
826 查看
最近Zend的PHP7已经 处于最后的BUG修复阶段,目前 已经更新RC7,对于Zend官方的说法PHP7的性能大约相比PHP5系列版本 提高2倍以上,增加了一些新的语法,摒弃了PHP5的一些影响性能的因素,主要增加了以下Features 。
Improved performance: PHP 7 is up to twice as fast as PHP 5.6 性能比5.6提高2倍
Consistent 64-bit support 64位一致性支持
Many fatal errors are now Exceptions 增加许多致命错误异常
Removal of old and unsupported SAPIs and extensions 移除了旧的不支持的 SAPIS 和一些扩展
The null coalescing operator (??) 空合并运算符
Combined comparison Operator (<=>) 结合比较运算符
Return Type Declarations 和C语言等一样 显示的返回值类型
Scalar Type Declarations 标量类型定义
Anonymous Classes 匿名类!
处于好奇的心态我同时安装了PHP5.5 以及PHP7 RC7 Release,体验一下 , 于是分别体验了 PHP7的 性能提升 以及 新语法,至于怎么安装配置PHP7相信不用我说了,废话不多说。
http://php.net/ php7 RC7 Release官方地址
https://wiki.php.net/rfc/scalar_type_hints_v5 PHP7 wiki
如下图php7和php5.5:
下面分别是PHP7 RC7和 PHP5运行上述快速排序 20000数据算法的速度。
所谓严格类型强类型的概念就是,我们要摒弃PHP5.6之前的若类型观念,因为我们知道PHP本身一门若类型语言,正因为如此在类型转换已经类型检查导致PHP语言本身性能极为低下php7的这一举动 也证明了这一点,例如下面代码
如果把上述代码改为return 1;才能正常运行,否则运行会报错,这就是PHP7的强类型约束,此模式下完全摒弃若类型。
OK关于Scalar Type就不一个一个写了
更多的介绍请参考:https://wiki.php.net/rfc/scalar_type_hints_v5#php_rfcscalar_type_declarations
简单的匿名类实例化
更多匿名类的东西参考 https://wiki.php.net/rfc/anonymous_classes
写到这里吧,写多了也没啥意思了。 相信简短的介绍足矣说明PHP7 的确很值得让人期待哦。
Improved performance: PHP 7 is up to twice as fast as PHP 5.6 性能比5.6提高2倍
Consistent 64-bit support 64位一致性支持
Many fatal errors are now Exceptions 增加许多致命错误异常
Removal of old and unsupported SAPIs and extensions 移除了旧的不支持的 SAPIS 和一些扩展
The null coalescing operator (??) 空合并运算符
Combined comparison Operator (<=>) 结合比较运算符
Return Type Declarations 和C语言等一样 显示的返回值类型
Scalar Type Declarations 标量类型定义
Anonymous Classes 匿名类!
处于好奇的心态我同时安装了PHP5.5 以及PHP7 RC7 Release,体验一下 , 于是分别体验了 PHP7的 性能提升 以及 新语法,至于怎么安装配置PHP7相信不用我说了,废话不多说。
http://php.net/ php7 RC7 Release官方地址
https://wiki.php.net/rfc/scalar_type_hints_v5 PHP7 wiki
1、PHP7与PHP5.5性能对比
PHP7的性能相对于PHP5.6提高了多少,下面用一个简单而且傻逼的代码来测试一下就知道了,这里我用5.5版本的PHP对比一下吧,电脑上只有5.5了 懒得去安装PHP5.6。如下图php7和php5.5:
1.1我这里用一小段傻逼代码来测试一下PHP:
<?php function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } define('ARRAY_SIZE',20000); function QuickSort($arr,$low,$high) { if($low>$high) return ; $begin=$low; $end=$high ; $key=$arr[$begin]; while($begin<$end) { while($begin<$end&&$arr[$end]>=$key) --$end ; $arr[$begin]=$arr[$end]; while($begin<$end&&$arr[$begin]<=$key) ++$begin; $arr[$end]=$arr[$begin]; } $arr[$begin]=$key; QuickSort($arr,$low,$begin-1); QuickSort($arr,$begin+1,$high); } $time_start = microtime_float(); $arr=array(); for($i=0;$i<ARRAY_SIZE;$i++) { array_push($arr,rand(1,20000)); } QuickSort($arr,0,ARRAY_SIZE-1); $time_end = microtime_float(); echo "Bengin:$time_start".'s '; echo "End:$time_end".'s '; echo "TakeTime: ".($time_end-$time_start).'s '; ?>
1.2 测试结果
分别在PHP7和PHP5.5下运行20000随机数据 快速排序算法之后结果 PHP7是PHP5.5的12倍!!!! 看来PHP7开始要雄起了!下面分别是PHP7 RC7和 PHP5运行上述快速排序 20000数据算法的速度。
2、PHP7新语法体验
2.1、标量类型 和强类型
PHP7新增四个标量类型 int,
float,
string
bool, 首先要使用强类型 必须在文件中加入指令
declare(strict_types=1)该指令必须是第一个指令而且只有一种用法
所谓严格类型强类型的概念就是,我们要摒弃PHP5.6之前的若类型观念,因为我们知道PHP本身一门若类型语言,正因为如此在类型转换已经类型检查导致PHP语言本身性能极为低下php7的这一举动 也证明了这一点,例如下面代码
<?php declare(strict_types=1); function GetInt():int{ return 1.0; } echo GetInt(); ?>
如果把上述代码改为return 1;才能正常运行,否则运行会报错,这就是PHP7的强类型约束,此模式下完全摒弃若类型。
<?php declare(strict_types=1); function GetInt():int{ return 1; } echo GetInt(); ?>
2.2 强类型参数
<?php declare(strict_types=1); function add(int $a,int $b):int{ return $a+$b; } echo add(1,2); ?>
<?php declare(strict_types=1); function add(int $a,int $b):int{ return $a+$b; } var_dump(add(1,2)); ?>var_dump的结果是 int(3)
2.3 返回类型冲突
返回值类型和强类型约束不同 将跑出异常<?php declare(strict_types=1); function foobar(float $abc): int { return ceil($abc + 1); } try{ foobar(1.22); }catch(Exception $ex){ echo $ex->getMessage(); } ?>
OK关于Scalar Type就不一个一个写了
更多的介绍请参考:https://wiki.php.net/rfc/scalar_type_hints_v5#php_rfcscalar_type_declarations
2.4 、关于PHP的 Anonymous Class
简单匿名类继承<?php declare(strict_types=1); class Foo {public function M1(){echo 'hello,world!';}} $child = new class extends Foo { public function M2(){echo 'hello,world!';return $this;}}; $child->M2()->M1(); ?>
简单的匿名类实例化
<?php declare(strict_types=1); var_dump(new class(5) { public function __construct($i) { $this->i = $i; } }); ?>
更多匿名类的东西参考 https://wiki.php.net/rfc/anonymous_classes
写到这里吧,写多了也没啥意思了。 相信简短的介绍足矣说明PHP7 的确很值得让人期待哦。
相关文章推荐
- yii2引入第三方类
- PHP 源码编码标准
- 【工具】Netperf 的使用
- PHP入门(8)-魔术变量
- PHP之路
- php字符串处理函数大全
- Yii2 百度编辑器小部件
- mark- PHP_CURL1之模拟POST登陆
- YII2 MetaTag 的实现方式
- yii2 ListView 中的 样式修改
- [head first php&mysql]读书笔记-基本的安全信息(第五章)
- php安装报错
- ortp打印日志
- php之curl操作
- PHP - 使用 Pear 进行安装和卸载包
- php中的time(),date(),mktime(),strtotime()
- PHP入门(7)-超级全局变量
- PHP入门(6)-控制语句
- FTP-设置及 主动模式与被动模式
- php转义总结