2008-09-15 6 views
2

私は、PHP対Python(そして、私が含む必要がある他の言語の可能性もある)の正確なランタイム比較をしようとしています。スクリプト内のタイミングは私の問題ではありませんが、スクリプト内のタイミングは、スクリプトの実行要求が出されてから出力するまでのすべてを考慮しません。ランタイムの比較

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

2)これを考慮する価値があると仮定して、どうやってこれを行うのですか?

私はので、私は、Linuxへのアクセスを持っているのMacを使用していますコマンドと私は私を助けるためのコマンドを作成/コンパイルすることを恐れていないよ、私はちょうどそのようなコマンドを記述するのか分かりません。

答えて

4

あなたのアイデアが言語を比較することであれば、それらの外部のものは比較目的には関係がないと言いたいと思います。

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

このよう

$ time script.php 
HI! 

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

あなたがウェブを考えている場合には、それは多くの困難を取得、あなたの時計の時間、ユーザ時間(PHPインタプリタ)とsysの時間(OS時間)

を与えますWebサーバーのオーバーヘッドが混ざり合い、WSGI v/s mod_phpを使用している場合など、比較が容易ではないためです。次に、チェーンのWebserving部分にプローブをフックする必要があります。

1
  1. コードを最適化する場合は、スピードを考慮する価値があります。なぜあなたはコードを最適化するのかを知っておくべきです(既存のコードベースの特定のタスクが長すぎます。「PHPはPythonよりも遅いとは聞いていません」)。実際にスイッチング言語を計画していない場合は、ではなく、の価値があります。ちょっと小さいモジュールが少し速くなったからといって、あなたのアプリを別の言語で書き直すことをお勧めしません。スピード以外に言語を選択するには、他にも多くの要因があります。

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

1

さて、あなたは助けるために「時間」コマンドを使用することができます。

[email protected]:~$ time echo "hello world" 
hello world 

real 0m0.000s 
user 0m0.000s 
sys 0m0.000s 
[email protected]:~$ 
を、これは環境の外でタイミングを回避します。

あなたが実際に余分な仕事をする必要があるかどうかは、まったくあなたがやっていることに依存します。私はこれが何らかの種類のWebアプリケーション用であると仮定します。したがって、使用するフレームワークが実際にどのように動作するかに依存します...コンパイルされた(または解析された)バージョンのスクリプトをキャッシュしますか?そうであれば、起動時間は完全に無関係になります(最初のヒットだけが起動時間が存在するため)。

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