まず最初に断っておきますが、これらのデータは私がまとめたものではありません。「Baidu Engineer HDK」で検索してください。これらのデータは私が提供したものです。この記事は非常に長いので、ここでいくつかの重要なポイントを要約しました。
関数のパフォーマンスを理解するには、まず関数の実行フローを知る必要があります。関数はまずスキャンによって言語フラグメント (トークン) に変換され、次に単純で意味のある式に解析され、次にオペコードにコンパイルされて、最後に実行されます。 。 (埋め込む)。 PHP 自体は C で実装されているため、最終的にはすべての C 関数が呼び出されます。つまり、PHP は C で開発されたソフトウェアです。
PHP では、ユーザー定義関数と PHP を介して実装された組み込み関数は、まったく異なる実装メカニズムを持っています。Zend の実行中に、組み込み関数が呼び出されたことを検出すると、組み込み関数の転送操作が実行されます。 in 関数は zif_xxx 関数に展開され、組み込み関数の操作については、zend は浅いコピーを実装しており、その効率は C の効率と同様であり、非常に強力です。それがユーザー定義関数の場合、ユーザー関数の呼び出しは最終的に一連のオペコードを解析することになります。ユーザー定義の空関数の実行速度は約 280w/s で、これは 1 秒あたり 280 万回実行できることを意味しますが、組み込み関数は 780w/s に達し、ユーザー定義関数のほぼ 3 倍になります。関数。理 原 これらの原則については話さないでください。 以下に関数名の長さがパフォーマンスに影響を与えるデータを示します。
上の表から、長さが 1 の関数と長さが 16 の空の関数呼び出しのパフォーマンスは 2 倍悪くなります。その理由は、関数名が長くなるほどクエリに時間がかかるためです。できるだけ短く。
この図は、組み込み関数を直接呼び出すユーザー定義関数です。これは、さまざまな種類の関数の実行効率を簡単にテストしたものです。機能が大きく異なります。
もちろん、彼自身もいくつかの PHP 関数の動作効率をテストしましたが、特に意味があるとは感じられませんでした。