欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C 语言实现程序计时笔记

程序员文章站 2024-02-26 22:06:16
...

有的时候写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;
}

C 语言实现程序计时笔记

第一行的打印结果不是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,果然就是上面的结果。

C 语言实现程序计时笔记

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

C 语言实现程序计时笔记

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

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

C 语言实现程序计时笔记

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