1

プログラミングを始めたときの私のモチベーションは結果を得ることでした。速度はそれほど重要ではありませんでしたが、時間が経つにつれて、速度が非常に重要であることがわかりました。

通常の関数とOOPのシングルトンパターンで性能的に大きな違いはないと思いますが、どちらが速いか知りたいです。

では、どちらが速いですか?

これ:

my_prefix_fn_name($arg1, $arg2);
my_prefix_fn_name2($arg1, $arg2);

またはこれ:

Class_Name::fn_name($arg1, $arg2);
Class_Name::fn_name2($arg1, $arg2);

またはこれ:

$cname = 'Class_Name';
$cname::fn_name($arg1, $arg2);
$cname::fn_name2($arg1, $arg2);
4

3 に答える 3

1

自分で測定したことはありませんが、経験に基づいて、通常の関数はネストされているのに対して、通常の関数は親の下に格納されているため、静的関数よりも高速であると感じています。

とにかく、この回答のポイントは、このリンクを共有することでした: http://phpperf.com/ (コメントの書き方はまだわかりません)。ただし、組み込み関数の速度の例をいくつか示します。

于 2013-07-08T17:27:44.777 に答える
0

自分で測ってください!

そして、あなたが測定したものは、ほとんどの場合、わずかに異なるだけであることを覚えておいてください. 重要なのは実行速度だけではありません。通常、コードを変更すると実行するよりも桁違いにコストがかかるため、コードの可読性ははるかに重要です。

また、シングルトンを実装しないことを忘れないでください! それらはアンチパターンです。これについては、ここでは詳しく説明しません。

于 2013-07-08T15:56:15.143 に答える
-2

これらのベンチマーク テストを実行して、例 1 と例 2 の実行時間のミリ秒単位またはナノ秒単位の違いを判断してみましたか?

基本的なベンチマーク テスト

[Get datetime for start timestamp]
    [For Loop, run 1000 times]
        [Run Function, example 1 or 2]
    [End For]
[Get datetime for end timestamp]

[Print time difference in milliseconds between end and start times]

次に、比較します。あったとしても、大きな違いはないと思います。3 番目の例のパフォーマンスはわずかに悪いと予想されますが、すべて無視できます。重要なのは、コードの保守性と将来の機能強化に費やされる時間であり、肉眼では検出できないわずかなパフォーマンスの向上を実際に絞り出すことではありません。

于 2013-07-08T15:57:02.163 に答える