[PHP] array() 속도 튜닝
http://www.blueshoes.org/phpBench.php
-- 목차 --------------------------------------
0. for() 문 조건(배열개수가
클 경우)
1. use array-reference(1)
2. use array-reference(2)
3. is_array() 조건
4. $array 의 key만 사용할 경우
5. $array 의 value 만 사용할 경우
----------------------------------------------
* 예제 배열
$arr = array
(
'foo1'=>'some1',
'foo3'=>'some3',
'foo8'=>'some8',
...
);
$lists =
(
array('foo1','bar1','...'),
array('foo2','bar2','...'),
array('foo3','bar3','...'),
...
);
0. for() 문 조건(배열개수가
클 경우)
## not good
##
//for($i=0; $i<sizeof($lists); $i++) ...
## good
##
$size = sizeof($lists);
for($i=0; $i<$size; $i++) ...
## good (mixed)
##
for($i=0; $size=sizeof($lists); $i<$size; $i++) ...
1. use array-reference(1)
$list = $lists[$i];
## not good
##
//$array[$list[0]] = $list[1];
## good, use reference
##
$array[$list[0]] = &$list[1];
## result $array
##
$array =
(
'foo1'=>'bar1',
'foo2'=>'bar2',
'foo3'=>'bar3',
...
);
2. use array-reference(2)
for($i=0; $i<$size; $i++)
## not good
##
//if($arr[$keys[$i]]) $tmp[] = $array[$keys[$i]];
## some good
##
//if($arr[$keys[$i]]) $tmp[] = &$array[$keys[$i]];
## good
##
if($f=$arr[$keys[$i]]) $tmp[] = $f;
## but this not good
##
if($f=$arr[$keys[$i]]) $tmp[] = &$f;
3. is_array() 조건
## not good
##
//if(is_array($array)) ...
## good
##
if($array && is_array($array)) ...
4. $array 의 key만 사용할 경우
## not good
##
//foreach($array AS $key=>$val)
//{ if($arr[$key]) $tmp[] = $arr[$key]; }
## good
##
$keys = array_keys($array);
$size = sizeof($keys);
for($i=0; $i<$size; $i++)
{ if($f=$arr[$keys[$i]]) $tmp[] = $f; }
5. $array 의 value 만 사용할 경우
## not good
##
//foreach($array AS $key=>$val) ...
## not good
##
//while(list(,$val)=each($array)) ...
## good
##
foreach($array AS $val) ...
## some good
##
$values = array_values($array);
$size = sizeof($values);
for($i=0; $i<$size; $i++) ... &$values[$i] ...
EOF
|