2

PHP と Python の正確な実行時比較を取得しようとしています (および、含める必要がある他の言語の可能性もあります)。スクリプト内のタイミングは私の問題ではありませんが、スクリプト内のタイミングは、スクリプトの実行を要求した瞬間から出力までのすべてを説明しているわけではありません。

1) 実際にそのようなことを考慮に入れる価値はありますか?

2) それを考慮に入れる価値があると仮定すると、どうすればいいですか?

私は Mac を使用しているので、Linux コマンドにアクセスできます。私を助けるためにコマンドをコンパイル/作成することを恐れません。そのようなコマンドの書き方がわかりません。

4

3 に答える 3

4

あなたのアイデアが言語を比較することである場合、言語以外のものは比較の目的には関係ないと思います。

それでも、time コマンドを使用してすべてを測定し、スクリプト内のタイミングと比較することができます。

このような:

$ time script.php
HI!

real    0m3.218s
user    0m0.080s
sys     0m0.064s

クロック時間、ユーザー時間 (PHP インタープリター)、およびシステム時間 (OS 時間) が表示されます。

Web を考えている場合は、Web サーバーのオーバーヘッドが混在するため、はるかに難しくなります。たとえば、WSGI v/s mod_php を使用している場合、比較するのは必ずしも容易ではありません。次に、プローブをチェーンのWebサービス部分にもフックする必要があります

于 2008-09-15T10:18:05.207 に答える
1
  1. コードを最適化する場合は、速度を考慮する価値があります。一般的に、コードを最適化している理由を知っておく必要があります (「PHP は Python より遅いと聞いた」ではなく、既存のコードベースの特定のタスクに時間がかかりすぎるなど)。実際に言語を切り替える予定がない場合は、速度を考慮に入れる価値はありません。1 つの小さなモジュールが何かをわずかに高速化するからといって、別の言語でアプリを書き直すことが良い考えであるとは限りません。言語を選択するには、速度以外にも多くの要因があります。

  2. もちろん、ベンチマークします。2 つのコードベースを複数回実行し、タイミングを比較します。両方のスクリプトがシェルから実行可能な場合はtimeコマンドを使用するか、各言語のそれぞれのベンチマーク機能を使用できます。後者の場合は、当然、実際の言語に大きく依存します。

于 2008-09-15T10:20:04.017 に答える
1

「time」コマンドを使用すると、次のことができます。

you@yourmachine:~$ time echo "hello world"
hello world

real    0m0.000s
user    0m0.000s
sys 0m0.000s
you@yourmachine:~$ 

そして、これは環境外のタイミングを回避します。

実際にその余分な作業の時間を計る必要があるかどうかについては...それはあなたが何をしているかに完全に依存します. これは何らかの種類の Web アプリケーション用であると想定しているため、使用するフレームワークが実際にどのように機能するかによって異なります...スクリプトの何らかのコンパイル済み (または解析済み) バージョンをキャッシュしますか? その場合、起動時間はまったく関係ありません (起動時間が存在するのは最初のヒットのみになるため)。

また、テストをループで実行して、最初の実行を割引できるようにしてください (必要に応じて、最初の実行のコストをレポートに含めます)。私は Java でいくつかのテストを行いましたが、JIT がその仕事をしているため、最初の実行は常に最も遅くなります (また、PHP、Python、および試した他の言語にも同じ種類のヒットが存在する可能性があります)。

于 2008-09-15T10:23:55.223 に答える