Я читал об этой теме.Я рассмотрел множество возможных решений, поэтому, пожалуйста, не отмечайте мой вопрос как дублированный, мне нужно только однозначное решение этой проблемы.
У меня есть функция, которая рассчитывает время выполнения некоторого кода.Этот код будет отправлен в качестве аргумента (будет функцией).
Это функция, которая вычисляет время:
double executionTime( /* HERE I WANNA PASS THE FUNCTION TO CALCULATE EXECTIME*/ )
{
LARGE_INTEGER frequency;
LARGE_INTEGER start;
LARGE_INTEGER end;
double interval;
QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&start);
// HERE GOES CODE TO PROCCESS
QueryPerformanceCounter(&end);
interval = (double) (end.QuadPart - start.QuadPart) / frequency.QuadPart;
return (interval);
}
Я пробовал это (и другие способы, но этонаиболее видимый):
double executionTime( void (*f)() )
{
LARGE_INTEGER frequency;
LARGE_INTEGER start;
LARGE_INTEGER end;
double interval;
QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&start);
// Function to proccess
f();
QueryPerformanceCounter(&end);
interval = (double) (end.QuadPart - start.QuadPart) / frequency.QuadPart;
return (interval);
}
Я не знаю, важны ли аргументы функции для процесса.На одних сайтах сказали да, на других сказали нет.Объявление функции, которую я хочу обработать:
int readFileAndInsertRegs(char *nombreFichero, PERSONA *tablaHash[], int tam, int tipoInsertado, int tipoPruebaColision)
Я вызвал функцию executionTime
, например:
executionTime( readFileAndInsertRegs("./files/listaActores.csv", &tablaHash, TAM_E1, NORMAL, LINEAL) );
Может кто-нибудь помочь мне с этой конкретной проблемой?
Спасибо.