PHPプログラム加速探索[6]--コード最適化
◆コード最適化
PEAR::BenchMark、今あなたはすでにどのようにあなたのコードをテストするかを知っていて、どのようにあなたのコードが速いか遅いかを判断するかを知っていて、どの部分が遅いかを知っています.次に私が言いたいのは、遅いコードを消滅または最適化する方法です.
この点で私個人の最も主要な経験は2つしかありません.1つは間違いを解消するか、低効率な循環です.2つ目は、データベース・クエリー・ステートメントの最適化です.「str_replaceはereg_replaceより速い」、「echoはprintより速い」など、他の最適化の詳細もあります.これらはしばらく置いておきますが、後でキャッシュで頻繁すぎるIOに対処することについてお話しします.
以下では,3つの機能は同じであるが,プログラム書き方が異なる関数の効率(消費時間)を比較する.
badloops.php
<?php
require_once(
'Benchmark/Iterate.php'
);
define
(
'MAX_RUN'
,
100
);
$data
= array(
1
,
2
,
3
,
4
,
5
);
doBenchmark
(
'v1'
,
$data
);
doBenchmark
(
'v2'
,
$data
);
doBenchmark
(
'v3'
,
$data
);
function
doBenchmark
(
$functionName
=
null
,
$arr
=
null
)
{
reset
(
$arr
);
$benchmark
= new
Benchmark_Iterate
;
$benchmark
->
run
(
MAX_RUN
,
$functionName
,
$arr
);
$result
=
$benchmark
->
get
();
echo
'<br>'
;
printf
(
"%s ran %d times where average exec time %.5f ms"
,
$functionName
,
$result
[
'iterations'
],
$result
[
'mean'
] *
1000
);
}
function
v1
(
$myArray
=
null
) {
//
for (
$i
=
0
;
$i
<
sizeof
(
$myArray
);
$i
++)
{
echo
'<!--'
.
$myArray
[
$i
] .
' --> '
;
}
}
function
v2
(
$myArray
=
null
) {
//
$max
=
sizeof
(
$myArray
);
for (
$i
=
0
;
$i
<
$max
;
$i
++)
{
echo
'<!--'
.
$myArray
[
$i
] .
' --> '
;
}
}
function
v3
(
$myArray
=
null
){
//
echo
"<!--"
,
implode
(
" --> <!--"
,
$myArray
),
" --> "
;
}
?>
:
v1 ran 100 times where average exec time 0.18400 ms
v2 ran 100 times where average exec time 0.15500 ms
v3 ran 100 times where average exec time 0.09100 ms
, , 。
v1 , , sizeof() 。 v2 $myArray $max , , 。 v3 , , 。
, 。 , 。 , :-) , 。
PHP , 。 , 。 :
http://www.phpe.net/articles/340.shtml
http://www.phpe.net/articles/323.shtml
:
http://club.phpe.net/index.php?s=&act=ST&f=15&t=4783&st=0
( )
MySQL 。