ここに問題があります: 異なる言語 (主に Perl と Python) で書かれた一連のプログラムがあります。すべてのプログラムはx
から行を読み取りstdin
、いくつかの作業を行い (行を解析し、データ構造を更新し、DB への長いクエリや高度なネットワーク通信を行わず、ディスク IO はまれです)、おそらく何かを に出力しstdout
ます。タスクはf
、与えられたx
とが、の計算stdin
が最も困難な行をサンプリングするようなプログラムを書くことです。アイデアは、将来のテストとベンチマークのためにそのようなラインを使用することです.x
x
これが私が立ち往生していることです: f
wraps 、からx
1行を読み取り、を処理する準備ができて、 に渡し、すぐにに関する統計情報の収集を開始します。問題は、計算上難しい線と簡単な線を区別するメトリックを見つけることができないということです。今のところ、私は2つのアプローチを試しました:l
stdin
x
l
f
l
x
x
/proc/[x pid]/stat
の実行の間に全体をダンプしx
ます。ほとんど変化しません (CPU ティックでさえ)。x
(同じを使用して)状態を監視し、/proc/[x pid]/stat
実行されていた時間を測定してみてください。行間で違いはありません。
たぶん、いくつかの高精度の指標がありますか?実行された CPU コマンドの数または使用されたメモリ内のバイト数のように?
これが私が書いたPythonの実際のコードです。詳細がいっぱいなので、読むのは最後ですhttps://gist.github.com/alexanderkuk/5630079#file-f-py .