Время построения графика в зависимости от размера ввода для самой длинной общей проблемы подпоследовательности - PullRequest
1 голос
/ 21 ноября 2010

Я хочу построить график времени в зависимости от размера ввода для самой длинной общей проблемы подпоследовательности в рекурсивном и динамическом подходах.До сих пор я разрабатывал программы для оценки функций lcs обоими способами, простой генератор случайных строк (с помощью здесь ) и программу для построения графика.Теперь мне нужно подключить все это следующим образом.

Теперь мне нужно подключить все это.То есть две программы для вычисления lcs должны запускаться примерно 10 раз с выходом из простого генератора случайных строк, заданного в качестве аргументов командной строки для этих программ.длина используемых строк хранится в файле, подобном

l=15, r=0.003, c=0.001 

. Он анализируется программой python для заполнения следующих списков

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

и затем строится график.У меня есть следующие вопросы относительно выше.

1) Как я могу передать выходные данные одной программы C другой программе C в качестве аргументов командной строки?

2) Есть ли какая-либо функция для оценки времени, необходимого для выполнения функции в микросекундах?В настоящее время единственный вариант, который у меня есть, это функция времени в Unix.Утилита командной строки усложняет управление.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2010

1) Есть много способов, самый простой - использовать system со строкой, построенной из вывода (или popen, чтобы открыть его как канал, если вам нужно прочитать его вывод), или если вы хотите чтобы выйти из текущей программы, вы можете использовать различные exec (помещая выходные данные в аргументы).

В оболочке sh вы также можете сделать это с помощью command2 $(command1 args_to_command_1)

2) Для определения времени в C см. clock и getrusage.

0 голосов
/ 21 ноября 2010

Если данные, передаваемые из программы в программу, невелики и могут быть преобразованы в символьный формат, вы можете передать их в качестве одного или нескольких аргументов командной строки. Если нет, вы можете записать его в файл и передать его имя в качестве аргумента.

Для программ на Python многие люди используют класс Timer модуля timeit для измерения скорости выполнения кода. Вы также можете свернуть свои собственные функции clock() или time() в модуле time. Разрешение зависит от того, на какой платформе вы работаете.

...