パフォーマンスを比較したいプログラムのバリエーションがいくつかあります。どちらも基本的に同じタスクを実行します。
Cとメモリですべてを行います。もう 1 つは外部ユーティリティを呼び出し、ファイル IO を実行します。
それらを確実に比較するにはどうすればよいですか?
1) 「time」を使用して「CPU の時間」を取得すると、system() を呼び出して IO を実行するための 2 番目のバリアントが優先されます。「システム」時間を「ユーザー」時間に追加しても、wait() でブロックされた時間はカウントされません。
2)サーバー上で実行され、いつでもCPUからプッシュできるため、それらをクロックすることはできません。サーバーがどのように利用されているのかわからないため、数千回の実験の平均化はソフトオプションです。これはクラスター上の VM であり、複雑です。
3) プロファイラーは、コードに費やす時間を与えてくれるので役に立ちません。この場合も、system() を実行するバージョンが好まれます。
これらのプログラムが消費するすべての CPU 時間を合計する必要があります。これには、ユーザー、カーネル、IO、および子が再帰的に含まれます。
これはよくある問題だと思っていましたが、まだ解決策が見つからないようです。
(times() で解決 - 以下を参照してください。皆さん、ありがとうございます)