1

对于递归和动态编程方法中的最长公共子序列问题,我希望根据输入大小绘制时间。到目前为止,我已经开发了两种方式来评估 lcs 函数的程序,一个简单的随机字符串生成器(在此处的帮助下)和一个绘制图形的程序。现在我需要通过以下方式连接所有这些。

现在我必须连接所有这些。也就是说,计算 lcs 的两个程序应该运行大约 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

如果从程序传递到程序的数据很小并且可以转换为字符格式,则可以将其作为一个或多个命令行参数传递。如果不是,您可以将其写入文件并将其名称作为参数传递。

对于 Python 程序,许多人使用timeit模块的Timer类来衡量代码执行速度。您也可以使用模块中的clock()ortime()函数来滚动拥有time。分辨率取决于您运行的平台。

于 2010-11-21T11:38:36.527 回答
0

1)有很多方法,最简单的方法是使用system从输出构造的字符串(或者popen如果您需要读回其输出,则将其作为管道打开),或者如果您希望离开当前程序,则可以使用各种exec(将输出放在参数中)。

sh外壳中,您也可以使用command2 $(command1 args_to_command_1)

2) 对于 C 中的时序,请参见clockgetrusage

于 2010-11-21T11:39:30.463 回答