3

所要時間に関してアルゴリズムを相互に評価する場合、JavaでCPUまたはユーザー時間を使用する必要がありますか?私はここの情報を使用しました:これらの値を取得するために、ベンチマークのためにCPU、システム、およびユーザー時間を取得する方法...

どうぞ:

"User time" is the time spent running your application's own code.
"System time" is the time spent running OS code on behalf of your application (such as for I/O).

「CPU時間」もよく参照します。

"CPU time" is user time plus system time. It's the total time spent using a CPU for your application.

CS実験に最も適しているのはどれですか?

4

2 に答える 2

3

確かにそれはあなたのアルゴリズムに依存します。

アルゴリズム自体がI/Oを実行しない場合、ユーザー時間はそれがどれだけ優れているかを示す最も正確な尺度です。

ただし、アルゴリズムがたとえばディスクベースの並べ替えを行う場合は、I/Oを含む時間がより適切です。

ただし、Java VM自体も独自のコードを実行します。特にGCは、OSの観点からもユーザー時間としてカウントされるため、徹底的に調べたい場合は、次の方法でGCの影響を最小限に抑えることができます。 GCの実行時間をログに記録し、OSによって測定されたユーザー時間からそれらを差し引きます。(一方、2つのアルゴリズムが同じ条件で実行され、一方が他方よりもはるかに多くのGC実行をトリガーする場合、それはアルゴリズム自体の障害であると主張できます。)

更新:申し訳ありませんが、リンクしたページを読みました。もちろん、スレッドのユーザー時間を測定する場合、上記は適用されません。プロセス全体のユーザー時間を見る場合のみです。

于 2012-06-18T22:33:23.340 に答える
2

多くの場合、重要なのは経過時間だけです。複数のコアを使用する (CPU 時間が増加する) が、ユーザーが待機する時間を短縮するプログラムを作成できる場合は、これが望ましいです。経過時間には、IO、ユーザー、およびシステム時間が含まれます。

于 2012-06-19T07:24:16.807 に答える