请教测试函数性能的方法,高手指教,一直在线,指教,在线等!!!!!!
请教在linux下用什么方法测试函数实际运行时间、内存占用等,linux下的c应该和正常的tc差不多的。请教如何测试,高手指教!!!!!
[解决办法]
在命令行,用
time ./a.out
可以查看程序a.out运行所花费的时间。
查看一个函数,那么只能自己调用clock()函数来计算了
内存占用我也不是很清楚。
不过在程序运行时,可以通过top命令查看一个程序的内存使用情况
[解决办法]
clock_tstart,finish;
start= clock();
/* 这里加要测试的代码 */
finish= clock();
printf( "%lf\n ", ((double)finish - start)/CLOCKS_PER_SEC );
最后的结果,单位是秒
[解决办法]
如果感到要测试的部分太小,可以用循环多运行几次,然后求平均值。
[解决办法]
clock返回的值的单位在不同平台可能不同,将clock的返回值除以CLOCKS_PER_SEC就得到以秒作为单位的值了。CLOCKS_PER_SEC值越大精度就越高。
例如
CLOCKS_PER_SEC值是1000,clock()返回的就是毫秒。
CLOCKS_PER_SEC值是1000000,clock()返回的就是微秒。
实在不行用循环还是可以估算的,例如
for(i=0;i <n;i++);//先测空转时间t1
for(i=0;i <n;i++) //测执行时间t2
{
/*测试代码*/
}
代码执行时间(t2-t1)/n
[解决办法]
lz试试这个吧!
#include <stdio.h>
#include <time.h>
char RoundToInt64 (float dval){ ... }
#defineTEST_COUNT0x10000000
int main()
{
char e = 9;
float d = 9.67;
clock_tts0,te0,ts1,te1;
int i = TEST_COUNT;
ts0= clock();
while( --i );
te0= clock();
i= TEST_COUNT;
ts1= clock();
while( --i )e = RoundToInt64 (d);
te1= clock();
printf( "time is %lf\n ", (double)((te1-ts1)-(te0-ts0))/CLOCKS_PER_SEC);
printf( "trunc d is %d\n ", e);
return 0;
}