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 関数の動作効率をテストしましたが、特に意味があるとは感じませんでした。