ホームページ php教程 php手册 PHP プログラムの高速化探索のためのコードの最適化

PHP プログラムの高速化探索のためのコードの最適化

Jun 21, 2016 am 09:09 AM
function

プログラム

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('v3', $data);
関数 doBenchmark($functionName = null, $arr = null);リセット($arr);
$benchmark = new Benchmark->run(MAX_RUN, $functionName, $arr);
echo '
'; printf("%s は %d 回実行され、平均実行時間は %.5f ミリ秒",$functionName,$result['iterations'],$result['mean'] * 1000); = null) {
// 非常に非効率なループ
for ($i =0; $i {
echo ' '
}
}
//最高の効率
" <!--", implode(" --> ";
}

?>
プログラムの出力結果はおそらく次のようになります:

v1 ran 100回、平均実行時間0.18400ミリ秒
v2が100回、平均実行時間0.15500ミリ秒
v3が100回、平均実行時間0.09100ミリ秒

関数の実行時間が短くなり、効率が上がっていることがわかります。

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

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

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







このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

機能とはどういう意味ですか? 機能とはどういう意味ですか? Aug 04, 2023 am 10:33 AM

機能とはどういう意味ですか?

MySQL.procテーブルの役割と機能の詳しい説明 MySQL.procテーブルの役割と機能の詳しい説明 Mar 16, 2024 am 09:03 AM

MySQL.procテーブルの役割と機能の詳しい説明

Python の「enumerate()」関数の目的は何ですか? Python の「enumerate()」関数の目的は何ですか? Sep 01, 2023 am 11:29 AM

Python の「enumerate()」関数の目的は何ですか?

Vue.use関数の使い方と機能 Vue.use関数の使い方と機能 Jul 24, 2023 pm 06:09 PM

Vue.use関数の使い方と機能

js関数の使い方は何ですか js関数の使い方は何ですか Oct 07, 2023 am 11:25 AM

js関数の使い方は何ですか

PHP の file_exists() 関数 PHP の file_exists() 関数 Sep 14, 2023 am 08:29 AM

PHP の file_exists() 関数

PHP で SOA 関数を使用する方法 PHP で SOA 関数を使用する方法 May 18, 2023 pm 01:10 PM

PHP で SOA 関数を使用する方法

Java8でのFunctionインターフェースの使い方 Java8でのFunctionインターフェースの使い方 Apr 17, 2023 pm 09:04 PM

Java8でのFunctionインターフェースの使い方

See all articles