php5.2与5.3性能测试对比

本文通过递归函数、数值运算、字符串操作、类和对象以及文件IO操作等五个方面对比了PHP5.2与PHP5.3的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Author:松风silvester

Url:http://www.cnblogs.com/silvester/archive/2011/04/01/2002114.html

      在递归测试、数值运算测试、字符串操作测试、 类和对象测试上5.3性能明显高于5.2,提升大约15%-40%,不过在内存消耗上5.3大于5.2, IO操作速度基本相同。老大伟志让我做的测试,测试方式也许不是绝对正确还希望大家多多指教,详细代码及测试结果如下:

测试环境

A.  虚拟机 + nginx0.7.67 + php5.2.10

B.  虚拟机 + nginx0.7.67 + php5.3.6


1.测试递归函数

     采用交换排序算法对1万个数值元素的数组排序30次,此测试主要测试5.2与5.3在递归调用方面的性能。


  
<? php
function getMsecTime()
{
$arr = explode ( ' ' , microtime () );
return $arr [ 0 ] + $arr [ 1 ];
}

// 开始时间
$startTime = getMsecTime();


/* *
* 快序排序算法
*
* @param array $arr
* @return array
*/
function quickSort( $arr )
{
if ( count ( $arr ) > 1 )
{
$key = $arr [ 0 ];
$min = array ( );
$max = array ( );
for ( $i = 1 ; $i < count ( $arr ); $i ++ )
{
if ( $arr [ $i ] > $key )
{
$max [] = $arr [ $i ];
}
else
{
$min [] = $arr [ $i ];
}
}
$min = count ( $min ) > 0 ? quickSort( $min ) : $min ;
$max = count ( $max ) > 0 ? quickSort( $max ) : $max ;
return array_merge ( $min , array ( $key ) , $max );
}
else
{
return $arr ;
}
}

// 程序运行时间
$runTimeNum = 0 ;
$runTime = 0 ;
for ( $i = 0 ; $i < 30 ; $i ++ )
{
$arr = range ( 1 , 10000 );
shuffle ( $arr );
$arr = quickSort( $arr );
$runTimeNum ++ ;
}
$runTime = ( getMsecTime() - $startTime ) / $runTimeNum ;

echo ' Running time: ' , $runTime , ' <br> ' ;
echo ' Memory usage: ' . memory_get_usage();
?>

测试结果

php5.2.10

Running time:0.2008661031723

Memory usage:1540616

php5.3.6

Running time:0.17402129968007

 Memory usage:2134104


2.测试数值计算

     对指定范围数值做循环加减法操作.


  
<? php
function getMsecTime()
{
$arr = explode ( ' ' , microtime () );
return $arr [ 0 ] + $arr [ 1 ];
}

// 开始时间
$startTime = getMsecTime();

$numArr = array ( 100 , - 100 , 1000 , - 1000 , 1 );

// 程序运行时间
$runTime = 0 ;
$k = 0 ;
$j = 0 ;
while ( $j < 1000000 )
{
$j ++ ;
$k += $numArr [ $j % 5 ];
}
$runTime = getMsecTime() - $startTime ;

echo ' Running time: ' , $runTime , ' <br> ' ;
echo ' Memory usage: ' . memory_get_usage();

测试结果

php5.2.10

Running time:0.15911817550659
Memory usage:81240

php5.3.6

Running time:0.13838791847229
Memory usage:625640


3.字符串运算

      对字符串做一百万次拼接操作。


  
<? php
function getMsecTime()
{
$arr = explode ( ' ' , microtime () );
return $arr [ 0 ] + $arr [ 1 ];
}

// 开始时间
$startTime = getMsecTime();

// 程序运行时间
$runTime = 0 ;

$j = 0 ;
$str = '' ;
while ( $j < 1000000 )
{
$j ++ ;
$str .= $j . ' abcdefg ' ;
}
$runTime = getMsecTime() - $startTime ;

echo ' Running time: ' , $runTime , ' <br> ' ;
echo ' Memory usage: ' . memory_get_usage();

测试结果

php5.2.10

Running time:0.30056118965149
Memory usage:12968168

php5.3.6

Running time:0.27767395973206
Memory usage:13512760


4.类和对象速度测试

      实例化一百万次指定类并调用其类方法。


  
<? php
function getMsecTime()
{
$arr = explode ( ' ' , microtime () );
return $arr [ 0 ] + $arr [ 1 ];
}

// 开始时间
$startTime = getMsecTime();

class testClass
{
public $testA ;

public $testB ;

public function __construct( $num )
{
$this -> testA = $num ;
}

public function getNum()
{
return $this -> testA;
}
};

// 程序运行时间
$runTime = 0 ;

$j = 0 ;
$str = '' ;
while ( $j < 1000000 )
{
$j ++ ;

$a = new testClass( $j );
$a -> getNum();
}
$runTime = getMsecTime() - $startTime ;

echo ' Running time: ' , $runTime , ' <br> ' ;
echo ' Memory usage: ' . memory_get_usage();

测试结果

php5.2.10

Running time:1.2546539306641
Memory usage:84928

php5.3.6

Running time:1.1489450931549
Memory usage:629296



5.文件IO操作速度测试

      测试建立、删除、检测文件和文件夹及向文件内写入数据。

 


  
<? php
function getMsecTime()
{
$arr = explode ( ' ' , microtime () );
return $arr [ 0 ] + $arr [ 1 ];
}

// 开始时间
$startTime = getMsecTime();

// 程序运行时间
$runTime = 0 ;

$j = 0 ;
while ( $j < 1000 )
{
$j ++ ;
$fileName = ' ./ ' . $j . ' test.txt ' ;
if ( file_exists ( $fileName ) )
{
unlink ( $fileName );
}
file_put_contents ( $fileName , $j );

$fileDir = ' ./ ' . $j . ' fileDir ' ;
if ( is_dir ( $fileDir ) && file_exists ( $fileDir ) )
{
rmdir ( $fileDir );
}
mkdir ( $fileDir , 0777 );
$j ++ ;
}
$runTime = getMsecTime() - $startTime ;

echo ' Running time: ' , $runTime , ' <br> ' ;
echo ' Memory usage: ' . memory_get_usage();

测试结果

php5.2.10

Running time:0.056291103363037
Memory usage:83392

php5.3.6 

Running time:0.057452917098999
Memory usage:628000




转载于:https://www.cnblogs.com/silvester/archive/2011/04/01/2002114.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值