ホームページ > php教程 > php手册 > ヒント: PHP で Web サイトのプログラム コードを開発するための最適化方法

ヒント: PHP で Web サイトのプログラム コードを開発するための最適化方法

WBOY
リリース: 2016-06-21 09:01:23
オリジナル
1009 人が閲覧しました

PHP 開発 Web サイト プログラムのコードを削除または最適化するにはどうすればよいですか?

現時点での私の個人的な経験から言える主なポイントは 2 つだけです。1 つは、間違ったループや非効率なループを排除することです。もう 1 つは、データベース クエリ ステートメントを最適化することです。実際、「str_replace は ereg_replace より速い」、「echo は print より速い」など、他にも最適化の詳細がいくつかあります。これらについてはひとまず脇に置き、頻繁すぎる IO に対処するためのキャッシュの使用については後ほど説明します。

次に、同じ機能でプログラムの書き方が異なる 3 つの関数の効率 (消費時間) を比較します。

webjx.php

require_once('Benchmark/Iterate.php')
define('MAX_RUN',100); array(1, 2, 3, 4, 5);

doBenchmark('v1', $data);
doBenchmark('v2', $data); , $data);
function doBenchmark($functionName = null, $arr = null)
{
reset($arr);
$benchmark = new Benchmark_Iterate
$benchmark-> run(MAX_RUN, $functionName, $arr);
$result = $benchmark->get();
echo '
'
printf("%s は平均 exec で %d 回実行されました)時間 %.5f ms",$functionName,$result['iterations'],$result['mean'] * 1000);
}

function v1($myArray = null) {
// 非常に非効率なループ
for ($i =0; $i {
echo ' ';
}
}


function v2($myArray = null) {
// 効率がわずかに向上
$max = sizeof ($myArray );
for ($i =0; $i {
echo ' '; 🎜> }
}

function v3($myArray = null){
//最高の効率
echo " ";
}

?>

プログラムの出力結果はおそらく次のようになります:
v1 run 100平均実行時間 0.18400 ミリ秒

v2 が 100 回実行されました。平均実行時間 0.15500 ミリ秒
v3 が 100 回実行されました。平均実行時間 0.09100 ミリ秒

ご覧のとおり、関数の実行時間は変更が少ないほど、効率は向上します。

関数 v1 には明らかなエラーがあります。各ループの時間を計算するには sizeof() 関数を呼び出す必要があります。 関数 v2 は、$myArray 配列の要素数をループの外で $max 変数に格納するため、各ループで配列の要素数を計算する必要がなくなり、効率が向上します。 Function v3 は最も効率的で、既存の関数を使用してループを回避します。

この例は、比較的効率的なコードがどのようなものであるかを感覚的に理解できるようにするだけです。実際の開発では、非効率なコードをダラダラと大量に書いてしまう人も多いと思います。簡潔で効率的なコードを書くには、練習に時間がかかると思います :-) しかし、これは別のトピックなので飛ばしましょう。

データベース アプリケーションは基本的にどの PHP プログラムでも使用されますが、実際の開発ではデータベース部分がシステム全体の効率に最も大きな影響を与えることがわかりました。データベースの最適化とデータ クエリ ステートメントの最適化については、紙面の都合上、ここでは詳しく説明しません。




関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート