加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 为什么不同的测试顺序会得到不同的结果?

发布时间:2020-12-13 16:12:41 所属栏目:PHP教程 来源:网络整理
导读:我更改了测试顺序并获得了不同的结果.我尝试禁用操作码缓存,添加未设置,但仍然得到不同的结果.为什么? http://snipplr.com/view/759/ $time_start = microtime(true);$myArray = array();for ( $i = 0; $i 100000; ++$i ){ $myArray[] = $i; $myArray[] = '
我更改了测试顺序并获得了不同的结果.我尝试禁用操作码缓存,添加未设置,但仍然得到不同的结果.为什么?

http://snipplr.com/view/759/

$time_start = microtime(true);

$myArray = array();

for ( $i = 0; $i < 100000; ++$i )
{
   $myArray[] = $i;
   $myArray[] = 'test a string';
}

$time_end = microtime(true);
printf("Took %f seconds for array[]n",$time_end - $time_start);

$time_start = microtime(true);

$myArray = array();

for ( $i = 0; $i < 100000; ++$i )
{
   array_push($myArray,$i);
   array_push($myArray,'test a string');
}

$time_end = microtime(true);
printf("Took %f seconds for array_pushn",$time_end - $time_start);

array []花了0.145872秒为array_push花了0.154502秒

$time_start = microtime(true);

$myArray = array();

for ( $i = 0; $i < 100000; ++$i )
{
   array_push($myArray,$time_end - $time_start);

$time_start = microtime(true);

$myArray = array();

for ( $i = 0; $i < 100000; ++$i )
{
   $myArray[] = $i;
   $myArray[] = 'test a string';
}

$time_end = microtime(true);
printf("Took %f seconds for array[]n",$time_end - $time_start);

array_push花了0.197076秒为array []花了0.122565秒

将测试数量增加到500000:

对于array_],取得0.779719秒,为array_push取得0.757806秒

array_push花了1.008018秒为array []花了0.494230秒

看看我是否更改了测试订单.这是2倍的速度差异.

解决方法

我的想法是关于内存使用:我添加了memory_get_usage()的差异的回声(就像时间),并看到这个:

Took 0.108744 seconds for array_push
memory: 32497848
Took 0.151069 seconds for array_push
memory: 320

Took 0.061715 seconds for array[]
memory: 32499584
Took 0.058831 seconds for array[]
memory: -40

所以:array_push()似乎不是清理为脚本分配的内存,而array []似乎也是这样做的. php需要一些时间来分配新的内存(我猜),所以在array_push()之后的array []不需要花费时间,而是array []之后的array_push().

或者,也许这是一个谵妄

ps:所以,为了提高性能,我们必须调用一个消耗大量内存并且不会在脚本开头清理的函数?! %|

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读