C 语言实现程序计时笔记

有的时候写C代码,想知道代码的执行时间,不知道怎么做。心想要是java就好了,System.currentTimeMillis()或者System.nanoTime(),真的是很方便。经过查阅在C里可以这样做:

#include "stdio.h"
#include "time.h"

int main(int argc, char *argv[])
{
	clock_t start, finish;
	int i, tmp;
	
	start = clock();
	for (i = 0; i < 10 * 1000; i++)
	{
		tmp = i + i * 2;
	}
	finish = clock();
	
	printf("%d\n", (finish - start) / CLOCKS_PER_SEC);
	return 0;
}

原来C的标准库time.h已经提供好了工具。

同时,程序里的clock_t和clock()函数以及CLOCKS_PER_SEC引起了我的兴趣。它们究竟是什么样子呢?

借助于C++,在C-Free和Mingw2.95的编译下,我打印了它们的一些信息。

#include <iostream>
#include <typeinfo>
#include "time.h"

using namespace std;

int main(int argc, char *argv[])
{
    cout << typeid(clock_t).name() << endl;
    cout << typeid(CLOCKS_PER_SEC).name() << endl;
    cout << CLOCKS_PER_SEC << endl;
    return 0;
}

第一行的打印结果不是1, 而是字母l, 说明clock_t是long类型。

第二行信息,说明CLOCKS_PER_SEC是double类型,第三行是1000, 则说明CLOCKS_PER_SEC的值应该是1000.0

 至于clock()函数,还不知道代表着什么,经过部门里C大牛的提醒,我想起了Mingw2.95肯定带的有time.h这个库文件。

找到time.h,我查看了一下,CLOCKS_PER_SEC和clock_t,果然就是上面的结果。

 clock_t表示处理器时钟滴答次数的类型。

CLOCKS_PER_SEC表示一秒钟时钟滴答的次数。

至于clock()函数,还是没看到内部实现,也没有看到注释信息。

这个看来还是需要查官方文档了。后续更新。

猜你喜欢

转载自blog.csdn.net/guohengcook/article/details/81274395
今日推荐