PHP プログラムの高速化の探索 コードの最適化_PHP チュートリアル

WBOY
リリース: 2016-07-20 11:05:27
オリジナル
782 人が閲覧しました

PEAR::BenchMark をマスターしたら、コードをテストする方法、コードが速いか遅いか、どの部分が遅いかを判断する方法がわかりました。そこで次に話したいのは、遅いコードのその部分を削除または最適化する方法についてです。

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

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

badloops.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 ' printf("%s は %d 回実行しましたが、平均実行時間は %.5f ms",$functionName,$result['iterations'],$result['mean'] * 1000);
}

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

function v2($myArray = null) {
// 効率が少し向上しました
$max = sizeof($myArray);
for ($i =0; $i < $max ; $i )
echo ' ";
}

?プログラムの出力結果はおおよそ次のとおりです:

v1 run 100 minutes where Average exec time 0.18400 ms
v2 run 100 minutes where Average exec time 0.15500 ms
v3 run 100 days where Average exec time 0.09100 ms

OK、できます関数の実行時間が短縮され、効率が向上していることがわかります。

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

この例は、比較的効率的なコードとは何かについて、知覚的に親しみ、理解を与えるだけです。実際の開発では、漠然と非効率なコードをたくさん書いてしまう人も多いと思います。簡潔で効率的なコードを書くには、練習に時間がかかると思います :-) しかし、これは別のトピックなので飛ばしましょう。

データベースアプリケーションは基本的にどのPHPプログラムでも使用されますが、実際に開発してみると、システム全体の効率に最も大きな影響を与えるのはデータベース部分であることが分かりました。




http://www.bkjia.com/PHPjc/445122.html

www.bkjia.com

http://www.bkjia.com/PHPjc/445122.html技術記事 PEAR::BenchMark をマスターすると、コードをテストする方法、コードが速いか遅いか、どの部分が遅いかを判断する方法がわかります。それで次に言いたいのは…
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート