2

Web プロジェクトが大きくなるにつれて、PHP がこのコードを解釈するかどうか疑問に思うのですが、

<?php
    function helloWorldOutput($helloworldVariable) {
        echo 'Hello World' . $helloworldVariable;
    }

    helloWorldOutput("I am PHP");
?>

これより遅い:

<?php 
    function a($b) { echo 'Hello World'+$b; }
    a("I am PHP");
?>

PHP はコンパイルされたバイナリを使用しないインタープリター型言語であるため、2 番目のサンプルは少し高速になるはずです。それは本当ですか?PHP でより高速なバージョンのコードをキャッシュする事前解釈メカニズムはありますか?

4

3 に答える 3

3

はい、より大きなコードをバイトコードに解析/コンパイルするには、余分な時間がかかります。この時間は通常は無視できるほどのものであり、コンパイルに費やされる時間を処理するためのより良い方法があるため、おそらく心配する必要はありません。

パフォーマンスを大幅に向上させるために行うことは、コンパイルされたコードをキャッシュし、ページへの最初のアクセス時を除いてコンパイル手順全体を排除するAPC などの PHP アクセラレータを使用することです。

アクセラレータを使用すると、コードにコメントを付けて明確に保つことで起こりうるマイナス面が取り除かれ、コードを短くする代わりに機能に集中できるようになります。

于 2013-02-03T10:32:12.780 に答える
1

最初のバージョンの解析とその呼び出しには時間がかかります。したがって、最初のバージョンを使用することを決定し、解析のためだけに何度も多くの名前を持つ関数を呼び出すと 2 番目のバージョンの方がわずかに高速になります。実際の関数実行の時点で、両方の関数が同じように高速になることはありません。

それでも、私のアドバイスは、そのようなマイクロ最適化を試みないことです。パフォーマンスはわずかに向上しますが、読みやすさは大幅に低下します。

于 2013-02-03T10:27:58.210 に答える
0

最初の例は文字数が少ないため、解析が難しく、php は内部である種のバイトコードを実行するため、実行速度に大きな違いはありません。

最も遅いビットはおそらくディスクからのファイルの読み取りであり、短いコードはその競争に簡単に勝ちます。

于 2013-02-03T10:31:52.983 に答える