Xin Xing をフォローして、PHP 関数のパフォーマンスについて学習してください

WBOY
リリース: 2016-06-13 12:02:55
オリジナル
930 人が閲覧しました

PHP 関数のパフォーマンスについては Xin Xing をフォローしてください

まず最初に断っておきますが、この記事は私のオリジナルですが、これらのデータは私がまとめたものではありません。「Baidu Engineer HDK」で検索してください。これらのデータは彼によって提供されました。彼の記事は非常に長いので、ここではいくつかの要点を抜粋しました。

関数のパフォーマンスを理解するには、まず関数の実行フローを知る必要があります。関数はまずスキャンによって言語フラグメント (トークン) に変換され、次に単純で意味のある式に解析され、次にコンパイルされます。オペコード、ついに実行。 PHP 自体は C で実装されているため、最終的にはすべての C 関数が呼び出されます。つまり、PHP は C で開発されたソフトウェアです。

PHP では、ユーザー定義関数と PHP を介して実装される組み込み関数は、まったく異なる実装メカニズムを持っています。Zend の実行中に、組み込み関数が呼び出されたことを検出すると、転送操作のみが実行されます。組み込み関数 コンパイル後、 zif_xxx 関数に展開されます。組み込み関数の操作については、zend はシャロー コピーを実装しており、その効率は C の関数と同様であり、非常に強力です。それがユーザー定義関数の場合、ユーザー関数の呼び出しは最終的に一連のオペコードを解析することになります。ユーザー定義の空関数の実行速度は約 280w/s で、これは 1 秒あたり 280 万回実行できることを意味しますが、組み込み関数は 780w/s に達し、ユーザー定義関数のほぼ 3 倍になります。関数。

理論的な話はやめて、関数名の長さがパフォーマンスに影響を与えるいくつかの結果について話しましょう。


上の表から、長さが 1 の関数と長さが 16 の空の関数呼び出しのパフォーマンスは 2 倍悪くなることがわかりました。その理由は、関数が長くなるからです。したがって、関数名はできるだけ短くする必要があります。


この図は、組み込み関数を直接呼び出すユーザー定義関数です。これは、単なるパフォーマンスの簡単なテストです。 2 つの関数の実行効率は大きく異なることがわかります。

もちろん、彼自身もいくつかの PHP 関数の動作効率をテストしましたが、特に意味があるとは感じませんでした。


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