开发者社区> usher.yue> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

PHP7 RC7 Release对比PHP5.6快速排序20000数据性能体验以及新语法尝鲜

简介: 最近Zend的PHP7已经 处于最后的BUG修复阶段,目前 已经更新RC7,对于Zend官方的说法PHP7的性能大约相比PHP5系列版本 提高2倍以上,增加了一些新的语法,摒弃了PHP5的一些影响性能的因素,主要增加了以下Features 。
+关注继续查看

最近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官方地址



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就不一个一个写了

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 的确很值得让人期待哦。












版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PHP变量和数据类型
1.静态类型语言,比如:C/Java等,在静态语言类型中,类型的检查是在编译期(compile-time)确定的。 2. 动态语言类型,比如:PHP,python等各种脚本语言,这类语言中的类型是在运行时确定的。 3. 无类型语言,比如:汇编语言,汇编语言操作的是底层存储,他们对类型毫无感知。
118 0
PHP变量和数据类型
原文:PHP变量和数据类型 编程语言可以分为三大类 1. 静态类型语言,比如:C/Java等,在静态语言类型中,类型的检查是在编译期(compile-time)确定的。 2. 动态语言类型,比如:PHP,python等各种脚本语言,这类语言中的类型是在运行时确定的。
1305 0
centos下 Apache、php、mysql默认安装路径
apache: 如果采用RPM包安装,安装路径应在 /etc/httpd目录下 apache配置文件:/etc/httpd/conf/httpd.conf Apache模块路径:/usr/sbin/apachectl web目录:/var/www/html 如果采用源代码安装,一般默认安装在/usr/local/apache2目录下 php: 如果采用RPM包安装,安装路
3123 0
+关注
usher.yue
算法相关技术专家
文章
问答
文章排行榜
最热
最新
相关电子书
更多
MySQL 5.7优化不求人
立即下载
使用C++11开发PHP7扩展
立即下载
使用C++开发PHP7扩展
立即下载