Время выполнения очень короткой функции - PullRequest
0 голосов
/ 25 мая 2020

Я должен отображать время выполнения некоторых поисковых алгоритмов. Однако, когда я использую start / end_t = clock (), он всегда отображает 0,00000 из-за низкой точности (даже с двойным типом)

Пожалуйста, скажите мне, как отображать это время работы.

int LinearSearch (int M[], int target, int size)
{
int k = 0;
for (k=0; k<size; k++)
{
    if(M[k]==target)
    {
        return k;
    }
    //else return -1;
}
}

 int LinearSentinelSearch (int M[],int target, int size)
{
int k = 0; 
M[size]=target;
while (M[k] != target)
    k++;
return k;
}



int binSearch(int List[], int Target, int Size) 
{
int Mid;
int low = 0;
int high = Size -1;
int count=0;
int a;

while( low <= high) 
{
    Mid = (low + high) / 2;

    if(List[Mid] == Target) return Mid;

    else if( Target < List[Mid] )
        high = Mid - 1;
    else
        low = Mid + 1;  
} 
return -1;

}

1 Ответ

0 голосов
/ 28 мая 2020

Вы можете рассчитать среднее время выполнения, просто выполнив алгоритм несколько раз N, а затем разделив общее время на N. Используя binSearch в качестве примера:

int i;
clock_t start, end;

start = clock();
for (i = 0 ; i < 1000 ; i++) {
    binSearch(/* your actual parameters here */);
}
end = clock();

printf("Mean ticks to execute binSearch: %f\n", (end - start) / 1000.0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...