
perf
プログラムのパフォーマンスを分析するために使用できます。
prgrm
ファイルの入力を使用してプログラムのパフォーマンスをテストすると仮定すると、次のことを実行できます。
perf stat prgrm < inp.dat
これで実験を何度も繰り返す場合は、このオプションを使用できます--repeat
。
perf stat --repeat 50 prgrm < inp.dat
動作しません。理由を理解します。をinp.dat
介して"パイプ"され、perf
2番目の実行では、最初の実行がファイル全体を"消費"したので、stdinへの入力が最後に達しました。
inp.dat
しかし、毎回最初から読み始めて繰り返し実験を実行できますか?
答え1
プログラムが入力ファイル名を取得できない場合は、各パフォーマンス統計の繰り返しでシェルを使用できます。私はあなたが望むすべてを小さなシェルスクリプトに入れます。
テスト-prgrm.sh:
#!/bin/sh
prgrm < inp.data
次に、次を実行します。
perf stat --repeat 50 ./test-prgrm.sh
ただし、中間シェルスクリプトファイルがなくても、sh -cを使用してこれを実行できます。
perf stat --repeat 50 sh -c 'prgrm < inp.data'
デフォルトでは、perfは呼び出されたプロセスのすべての子項目のカウンタを保持します。シェルの実行にはいくつかの例がありますが、これはプログラムの実行に比べておそらく小さなオーバーヘッドです。