2013-03-14 6 views
0

Как вы работаете в реальном времени и времени выполнения программы с помощью clock() ??Как выработать время выполнения и реальное время алгоритма

+0

Ваш вопрос непонятен. Вы спрашиваете, как определить, сколько времени требуется для выполнения кода? –

+0

да, я должен знать, как выработать реальное мировое время, которое требуется для моего кода для запуска. – 2013-03-14 13:08:31

+2

Учитывая, что любой из источников времени, с которыми компьютер может быть взломан, вы в значительной степени не можете сделать это надежно. Вы можете получить приблизительную оценку, запустив системное время перед запуском расчета и сразу после его завершения и вычитая первое из последнего. – Vesper

ответ

0

если часы() является требованием, я не могу помочь. Если «получение времени выполнения» - это то, что вы хотите, вы можете посмотреть опцию профилирования gcc (компилятор gnu). Вы привяжете свой код к специально скомпилированным библиотекам, которые предоставляют профилирующие данные.

0

Непонятно использовать часы(), чтобы найти время выполнения программы.

Но я могу предложить одно возможное решение вашей проблемы. Вы должны измерять время с использованием clock() до и после каждого оператора C, который отправляет текущий процесс в состояние ожидания или заблокированное состояние. Например, ваша программа может ожидать завершения или блокировки дочернего процесса до тех пор, пока пользователь не вводит некоторые данные. Поэтому в таких случаях ваша программа не использует процессор. Таким образом, вы должны вычесть это время из общего времени работы вашей программы.

int sum,n1,n2; 
clock_t t1, t2, t3, t4; 
long int x; 
double dur1,dur2; 

t1 = clock(); 

printf("\nEnter two numbers:\n"); 

t2 = clock(); 

scanf("%d%d",&n1,&n2); 

t3 = clock(); 

sum= n1 + n2; 

printf("\nSum is %d\n",sum); 

t4 = clock(); 

dur1 = (double) (t4 - t1)/CLOCKS_PER_SEC; 

dur2 = (double) ((t4 - t1) - (t3 - t2))/CLOCKS_PER_SEC; 

printf("\nThe Total Running time of the proces is %lf\n", dur1); 
printf("\nThe CPU time taken by the proces is %lf\n", dur2); 

Конечно, эта программа даст только приблизительную оценку в случае сколь угодно большой программы. Для небольших программ оценка не всегда полезна.

Смежные вопросы