2010-11-21 45 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