2010-11-21 47 views
1

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

现在我必须连接所有这些。也就是说,两个用于计算lcs的程序应该运行10次,并使用简单随机字符串生成器的输出作为这些程序的命令行参数。

采取这些程序的执行的时间被计算并且这与使用的字符串的长度一起被存储在一个文件等

l=15, r=0.003, c=0.001 

这由Python程序来填充以下列表解析

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

然后绘制图表。我有关于上面的以下问题。

1)如何将一个C程序的输出作为命令行参数传递给另一个C程序?

2)是否有任何函数来评估以微秒执行函数所用的时间?目前唯一的选择是unix中的时间函数。作为命令行实用程序使其处理起来更为困难。

任何帮助将不胜感激。

回答

0

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

对于Python程序,很多人使用timeit模块的Timer类来测量代码执行速度。您也可以使用time模块中的clock()time()函数来自行设置。解决方案取决于你在哪个平台上运行。

0

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

在一个sh壳也可以做到这一点与command2 $(command1 args_to_command_1)

2)对于在定时C,见clockgetrusage