2

この他のスレッドで説明されているように、Linux で time コマンドを使用する場合の「real」、「user」、および「sys」の違いを理解しています。時間(1)?

現在、Python、Java、および C のパフォーマンスの小さな比較に取り組んでおり、どのレポートを使用すればよいか迷っています。

"User+sys" はより現実的なもののようですが、たとえば、C と Java を比較する際に問題が発生することはありませんか? JVM はマルチプロセッサ/スレッドのコードを最適化する方法を知っているのに、GCC はそうではありませんか?

また、バックグラウンドで他の重いプロセスが実行されていないことを確認した場合、「本物」は十分に現実的ではないでしょうか?

4

1 に答える 1

3

答えは、「(Python | Java | C)のパフォーマンス」の意味によって異なります。多くの場合、ユーザーが本当に気にするのは、に対応する経過壁時間realです。いくつかの言語で合理的な方法でコードを記述し、言語の1つがそれを自動的に並列化して4つのコアを使用できるとします。これにより、ユーザーが返信を待つ時間が短くなる場合、これは公正な比較であると言えます。もちろん、それはその特定のマシンに有効であり、シングルコアマシンでの結果は異なる可能性があります。アプリがページフォールトを引き起こす場合、ユーザーは待機します。ユーザーにとって、より長く待たなければならない場合、アプリのサイクル数が少ないと言っても役に立ちません。

どのように測定する場合でも、実行ごとに多くの変動がある可能性があるため、必ずテストを複数回繰り返してください。Javaのような言語でも、JITコンパイルのために、最高速度に達する前にしばらくの間プログラムを実行する必要があります(ただし、プログラムが定義上非常に短く、Java仮想マシンをワープアップできない場合は、 Javaにはあまりにも悪い)。パフォーマンスのテストは非常にトリッキーであり、経験豊富な開発者でさえ、結果を誤って解釈したり、実際に意図したものを測定しなかったりする傾向があります。

于 2012-05-17T12:49:06.647 に答える