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;