C语言怎样统计一个算法执行的CPU时间?该如何处理

C语言怎样统计一个算法执行的CPU时间?
如题,应该有个函数,但是不太清楚,知道的麻烦告诉一下,谢谢!

------解决方案--------------------
#include <time.h>
#include <stdio.h>
//粗约的统计可以这样
clock_t start, finish;

start = clock();
............
finish = clock();
printf( " %d ", finish - start);

------解决方案--------------------
在非实时的多任务操作系统上不是非常的精确
下面内容来自WINDOWS核心编程


有时想要计算线程执行某个任务需要多长的时间。许多人采取的办法是编写类似下面的代码:

BOOL GetProcessTimes(HANDLE hProcess,
PFILETIME pftCreationTime, PFILETIME pftExitTime,
PFILETIME pftKernelTime, PFILETIME pftUserTime);

BOOL GetThreadTimes(HANDLE hThread,
PFILETIME pftCreationTime, PFILETIME pftExitTime,
PFILETIME pftKernelTime, PFILETIME pftUserTime);

使用这个函数,可以通过使用下面的代码确定执行复杂的算法时需要的时间量:


__int64 FileTimeToQuadWord(PFILETIME pft)
{
return (Int64ShllMod32(
pft-> dwHighDateTime, 32) | pft-> dwLowDateTime);
}

void PerformLongOperation()
{
FILETIME ftKernelTimeStart, ftKernelTimeEnd;
FILETIME ftUserTimeStart, ftUserTimeEnd;

FILETIME ftDummy;
__int64 qwKernelTimeElapsed, qwUserTimeElapsed,
qwTotalTimeElapsed;

//Get starting times.
GetThreadTimes(GetCurrentThread(), &ftDummy,
&ftDummy, &ftKernelTimeStart, &ftUserTimeStart);

//Perform complex algorithm here.

//Get ending times.
GetThreadTimes(GetCurrentThread(), &ftDummy,
&ftDummy, &ftKernelTimeEnd, &ftUserTimeEnd);

//Get the elapsed kernel and user times by
//converting the start and end times
//from FILETIMEs to quad words, and then
//subtract the start times from the end times.

qwKernelTimeElapsed =
FileTimeToQuadWord(&ftKernelTimeEnd) -
FileTimeToQuadWord(&ftKernelTimeStart);

qwUserTimeElapsed =
FileTimeToQuadWord(&ftUserTimeEnd) -
FileTimeToQuadWord(&ftUserTimeStart);

//Get total time duration by adding the kernel
//and user times.

qwTotalTimeElapsed = qwKernelTimeElapsed +
qwUserTimeElapsed;

//The total elapsed time is in
//qwTotalTimeElapsed.
}



------解决方案--------------------
clock_t start, finish;

start = clock();
// ............
for (int i=0;i <1000;i++)
{

if (i%10==0)
{
cout < <i < <endl;
}
}
finish = clock();
printf( " %d ", finish - start);

执行时间过短,可能
------解决方案--------------------
#include <time.h>
#include <stdio.h>
//粗约的统计
time_t start, finish;

start = time(NULL);
............
finish = time(NULL);
printf( "%f\n ", difftime(finish, start));
------解决方案--------------------
VC中基于 Windows 的精确定时
http://www.vckbase.com/document/viewdoc/?id=1301

可以看文档, 以及示例工程代码下载 ~