1

再帰的および動的プログラミングアプローチにおける最長共通サブシーケンス問題について、入力のサイズに対して時間をプロットしたいと思います。これまで、私は lcs 関数を両方の方法で評価するためのプログラムを開発してきました。単純なランダム文字列ジェネレーター (ヘルプはこちらから) と、グラフをプロットするプログラムです。次に、これらすべてを次の方法で接続する必要があります。

今、これらすべてを接続する必要があります。つまり、lcs を計算する 2 つのプログラムは、単純なランダム文字列ジェネレーターからの出力をコマンド ライン引数としてこれらのプログラムに与えて、約 10 回実行する必要があります。

これらのプログラムの実行にかかった時間が計算され、使用された文字列の長さと一緒に次のようなファイルに保存されます。

l=15, r=0.003, c=0.001 

これは python プログラムによって解析され、次のリストに入力されます

sequence_lengths = [] 
recursive_times  = []
dynamic_times    = []

そして、グラフがプロットされます。上記に関して、以下の質問があります。

1) ある C プログラムの出力をコマンドライン引数として別の C プログラムに渡すにはどうすればよいですか?

2)関数の実行にかかる時間をマイクロ秒単位で評価する関数はありますか? 現在、私が持っている唯一のオプションは、UNIX の時間関数です。コマンドラインユーティリティであるため、扱いが難しくなります。

どんな助けでも大歓迎です。

4

2 に答える 2

0

プログラムからプログラムに渡されるデータが小さく、文字形式に変換できる場合は、1 つ以上のコマンド ライン引数として渡すことができます。そうでない場合は、ファイルに書き込み、その名前を引数として渡すことができます。

Python プログラムの場合、多くの人がtimeitモジュールのTimerクラスを使用してコードの実行速度を測定します。clock()モジュール内のまたはtime()関数を使用してロール ユー オウンすることもできtimeます。解像度は、実行しているプラ​​ットフォームによって異なります。

于 2010-11-21T11:38:36.527 に答える
0

1) 多くの方法があります。最も簡単な方法はsystem、出力から構築された文字列を使用することです (または、出力popenを読み返す必要がある場合はパイプとして開きます)。または、現在のプログラムを終了したい場合は、次を使用できます。さまざまexecです(出力を引数に配置します)。

shシェルでは、これを行うこともできますcommand2 $(command1 args_to_command_1)

2) C でのタイミングについては、 および を参照clockしてくださいgetrusage

于 2010-11-21T11:39:30.463 に答える