您的位置:首页 > 编程语言 > PHP开发

119. PHP 性能问题(2)

2016-09-03 23:18 155 查看
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.尽量少用魔法函数



<?php

function 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;




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 性能