到底什么导致了执行效率上的差异(winxp+apache2.0+php521)

作者:admin 发布时间:May 21, 2007 分类:默认

发现一个比较奇怪的问题,到底什么导致了执行效率上的差异。

首先有一个数组 Myarray;
接下来我们把通过 serialize 把它弄成字符串 MYserialize;

1.一个存为是纯 serialize 化的字符串的文本,内容为:“MYserialize”假定文件为1.php。
2.另一个存成php文件内容为 :“ ”假定文件为2.php。

接下来我们需要用到这个数组:

方法a.我们使用1.php文件 获取方式为 :
$myarray =unserialize(file_get_contents('1.php'));

方法b.采用2.php文件方式获取:
include('2.php');

上面两种方式感觉上就是include 和 file_get_contents 的差异。

为了进一步测试我们接着把 Myarray 直接存成 文件,设置为3.php 内容就是 “”

接下来使用的时候直接 include('3.php'); 方法c。

这样3者对比就会发现 问题又好像出在 unserialize 的执行效率上。

现在大家可以想像一下 a,b,c 3种方式到底执行效率是怎么样的。发现一个比较奇怪的问题,到底什么导致了执行效率上的差异。

首先有一个数组 Myarray;
接下来我们把通过 serialize 把它弄成字符串 MYserialize;

1.一个存为是纯 serialize 化的字符串的文本,内容为:“MYserialize”假定文件为1.php。
2.另一个存成php文件内容为 :“ ”假定文件为2.php。

接下来我们需要用到这个数组:

方法a.我们使用1.php文件 获取方式为 :
$myarray =unserialize(file_get_contents('1.php'));

方法b.采用2.php文件方式获取:
include('2.php');

上面两种方式感觉上就是include 和 file_get_contents 的差异。

为了进一步测试我们接着把 Myarray 直接存成 文件,设置为3.php 内容就是 “'...' ......); ?>”

接下来使用的时候直接 include('3.php'); 方法c。

这样3者对比就会发现 问题又好像出在 unserialize 的执行效率上。

现在大家可以想像一下 a,b,c 3种方式到底执行效率是怎么样的。
下面开始公布测试结果,首先还要说明一下平台(winxp+apache2.0+php521) php采用apache module方式运行。
小数组情况下。
c最慢 b次之 a最快

随着数组数据量的增大abc都开始合理性的变慢,当数组大到一定程度的时候 b 开始慢的一点离谱 ,可以想像的是:如果问题出在include上那很显然 c 也会如b般慢 ,而如果问

题在 unserialize 的话那a 也会呈这种慢的趋势。

但事实上除了 b 出现离谱的巨慢外, a,c的效率一直都在情理之中,值得一说的是a始终保持着最快的速度。

所以问题的结果有些奇怪,include+unserialize 导致变慢?

显然这个结果是不能让人信服的。

这次改用(winxp+apache224+php522) php采用fastcgi方式运行

这次测试的结果比较合理了,无论数据大小3者差异都并不大。 c相对来说快一些,这也比较合理毕竟少了一次unserialize操作。

标签: none

添加新评论 »

captcha
请输入验证码