我一直在阅读这个主题。我已经阅读了很多可能的解决方案,所以请不要将我的问题标记为重复,只需要这个问题的正确解决方案。
我有一个计算某些代码执行时间的函数。此代码将作为参数发送(将是一个函数)。
这是计算时间的函数:
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) );
谁能帮我解决这个特殊问题?
谢谢你。