Предположим, у меня есть вложенный цикл for и проверки if, показанные ниже, если бы я хотел увидеть, сколько тактов (в конечном счете, сколько секунд) выполняет конкретный цикл for или if, чтобы завершить выполнение.
Если сумма количества тактов (секунд), взятых внутренним циклом for и if-check, равна (или приблизительно равна) количеству тактов (секунд), взятых самым внешним для-loop.?
Или я делаю это неправильно?Как рассчитать циклы, если есть какой-то другой способ сделать это ??1005*
Примечание: у меня есть 3 разные функции, выполняющие почти одно и то же, я объявил 3 разные функции для измерения каждого цикла for или если-check отдельно 'потому что, если я пытаюсь получить время выполнения всех подкомпонентов в одном и том же фрагменте кода, то количество тактов (сек), взятых внешним циклом for, будет включать в себя некоторое дополнительное выполнение команд, которыевычисление количества тактов внутреннего цикла for-if и if-check я думаю.
void fun1(){
int i=0,j=0,k=0;
clock_t t=0,t_start=0,t_end=0;
//time the outermost forloop
t_start = clock();
for(i=0;i<100000;i++){
for(j=0;j<1000;j++){
//some code
}
if(k==0){
//some code
}
}
t_end = clock();
t=t_end-t_start;
double time_taken = ((double)t)/CLOCKS_PER_SEC;
printf("outer for-loop took %f seconds to execute \n", time_taken);
}
void fun2(){
int i=0,j=0,k=0;
clock_t t2=0,t2_start=0,t2_end=0;
for(i=0;i<100000;i++){
//time the inner for loop
t2_start=clock();
for(j=0;j<1000;j++){
//some code
}
t2_end=clock();
t2+=(t2_end-t2_start);
if(k==0){
//some code
}
}
double time_taken = ((double)t2)/CLOCKS_PER_SEC;
printf("inner for-loop took %f seconds to execute \n", time_taken);
}
void fun3(){
int i=0,j=0,k=0;
clock_t t3=0,t3_start=0,t3_end=0;
for(i=0;i<100000;i++){
for(j=0;j<1000;j++){
//some code
}
//time the if check
t3_start=clock();
if(k==0){
//some code
}
t3_end=clock();
t3+=(t3_end-t3_start);
}
double time_taken = ((double)t3)/CLOCKS_PER_SEC;
printf("if-check took %f seconds to execute \n", time_taken);
}