ホームページ > バックエンド開発 > PHPチュートリアル > PHP 開発プログラムの高速化と低速コードの最適化手法の探索_PHP チュートリアル

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

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

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 < $i )
{
' ";
}

?>


プログラムの出力結果は大体こんな感じです:

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 minutes where Average exec time 0.09100 ms

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

関数 v1 には明らかなエラーがあります。各ループの時間を計算するには sizeof() 関数を呼び出す必要があります。

Function v2 は、ループの外で $myArray 配列の要素数を $max 変数に格納します。これにより、ループするたびに配列の要素数を計算する必要がなくなり、効率が向上します。 Function v3 は最も効率的で、既存の関数を使用してループを回避します。

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

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


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

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