119. PHP 性能问题(2)

来源:互联网 发布:免越狱安装软件 编辑:程序博客网 时间:2024/06/05 22:58

1.语言性能优化
这里写图片描述


bad.php

<?php$array_1 = array();$array_2 = array();for ($i=0;$i<rand(1000,2000);$i++){        $array_1[] = rand();}for ($i=0; $i<rand(1000,2000); $i++) {        $array_2[] = rand();}$array_merged = array();foreach ($array_1 as $v) {        $array_merged = $v;}foreach ($array_2 as $v) {        if (!in_array($v,$array_merged)) {                $array_merged[] = $v;        }}var_dump($array_1,$array_2,$array_merged);

good.php

<?php$array_1 = $array_2 = range(1000,2000);shuffle($array_1);shuffle($array_2);$array_merged = array_merge($array_1,$array_2);var_dump($array_1,$array_2,$array_merged)

用 ab 压测
这里写图片描述

这里写图片描述


2. PHP 代码运行流程
这里写图片描述

用 PHP 内置函数,scanner 扫描的行数就少了很多,而且 zend 引擎容易理解,perser 成 cpcode 更少。phalcon现在更多的去缓存 opcode

3.PHP 内置函数的优劣

这里写图片描述

<?php$start = current_time();$i = 0;$arr = range(1,200000);while ($i<200000) {    ++$i;    // 两个内置函数实现同样的功能    isset($arr[$i]);    //array_key_exists($i,$arr);}$end = current_time();echo "Load Time :" . number_format($end - $start,3) * 1000;function current_time(){    list($usec,$sec) = explode(" ",microtime());    return ((float)$usec + (float)$sec);}

这里写图片描述
这里写图片描述


4.尽量少用魔法函数
这里写图片描述

<?phpfunction currency_time(){    list($usec,$sec) = explode(' ',microtime());    return (float)$sec + (float)$usec;}$start = currency_time();class Test{   // private $var = '123';    public $var = '123';    /*public function __get($varname)    {        return $this->var;    }*/}$i = 0;while ($i<100000) {    $i++;    $test = new Test();    $test->var;}$end = currency_time();echo ($end-$start)*1000;

这里写图片描述
这里写图片描述


0 0
原创粉丝点击