函数执行时间测试

测试函数执行时间;

#define WIN32  // 如果VC编译器定义WIN32 使用gettimeofday()
#include <time.h>
#ifdef WIN32
#include <windows.h>
#else
#include <sys/time.h>
#endif
#ifdef WIN32
int gettimeofday(struct timeval *tp, void *tzp)
{
	time_t clock;
	struct tm tm;
	SYSTEMTIME wtm;
	GetLocalTime(&wtm);
	tm.tm_year = wtm.wYear - 1900;
	tm.tm_mon = wtm.wMonth - 1;
	tm.tm_mday = wtm.wDay;
	tm.tm_hour = wtm.wHour;
	tm.tm_min = wtm.wMinute;
	tm.tm_sec = wtm.wSecond;
	tm.tm_isdst = -1;
	clock = mktime(&tm);
	tp->tv_sec = clock;
	tp->tv_usec = wtm.wMilliseconds * 1000;
	return (0);
}
#endif /* WIN32 */



使用方式:

// 测试执行时间代码
timeval tv;
gettimeofday(&tv, NULL);
double cl = tv.tv_sec + (double)tv.tv_usec / 1000000;

      //测试代码


        gettimeofday(&tv, NULL);

cl = (tv.tv_sec + (double)tv.tv_usec / 1000000) - cl;
printf("\n执行时间 : %0.3f 秒\n", cl);




例如测试一个翻转字符代码:

void Reverse(char *word)   // 适合C风格字符串反转函数
{                          // 来源 C++ Primer Plus 第五章 forstr2.cpp -- reversing an array
	char temp;
	size_t i, j;
	for (j = 0, i = strlen(word) - 1; j < i; --i, ++j) {
		temp = word[i];
		word[i] = word[j];
		word[j] = temp;
	}
}


int main()
{
	using namespace std;
	// 1KW 字符串反序函数测试,分别测试同样算法,string 和 C风格字符串的区别
	// 测试执行时间代码
	timeval tv;
	gettimeofday(&tv, NULL);
	double cl = tv.tv_sec + (double)tv.tv_usec / 1000000;
	
	char cs[] = "0123456789abcdefghijklmnopqrstuvwxyz";
	for (int i = 0; i != 10000001; i++)
		 Reverse(cs);
	cout << cs << endl;

	gettimeofday(&tv, NULL);
	cl = (tv.tv_sec + (double)tv.tv_usec / 1000000) - cl;
	printf("\n执行时间 : %0.3f 秒\n", cl);
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值