(1)使用命令time:
[root@localhost-120 xgf]# time ./standard
counter = 1000000
real0m0.006s
user0m0.000s
sys 0m0.000s
time命令对秒(s)级别的很精确,而对毫秒级的误差比价大。我们可以通过sleep/usleep函数来进行测试。sleep(0.1)或者usleep(100)都是表示休眠100ms,而测试结果都是:
real0m0.002s
user0m0.000s
sys 0m0.000s
(2)通过difftime函数:
double difftime(time_t time1, time_t time0)计算time1和time0之间的秒数。测试程序如下:
#include <stdio.h>
#include <time.h>
#define MAX 1000
int do_work()
{
int counter = 0 /* the counter */
int i, j /* the loop variable */
/* accumulate the counter */
for(i = 0i <MAXi++)
for(j = 0j <MAXj++)
counter++
/* return the counter's value */
return counter
}
int main()
{
time_t start, end
int val
start = time(NULL)
do_work()
end = time(NULL)
printf("val = %f/n", difftime(end, start))
return 0
}
1.332s。stat函数是用来获取文件的各种属性的一个linux下的常用API函数。stat函数耗时时间长是1.332s。函数,数学术语。其定义通常分为传统定义和近代定义,函数的两个定义本质是相同的。/*这是一个简单的用户程序与驱动交互的例程*/
void main(void)
{
int testdev
int i
char buf[10]
/* 这里是用的open系统调用,是linux内核接口函数,不是库函数,返回fd,详细请google ,这个open最终会调用驱动中的open函数(代码流程是这样的open()->sys_open()->filp_open()->dentry_open()->驱动open)*/
testdev = open ("/dev/test",O_RDWR)
if(testdev == -1)
{
printf("Cann't open file...../n")
exit(0)
}
printf("buf = 0x%x/n",buf)
/* 下面的read write 和ioctl是用户程序和内核驱动的最直接的交互方式 */
read(testdev,buf,10)
write(testdev,buf,1)
led_ctl.port='G'
led_ctl.bit=5
led_ctl.value=0
ioctl(testdev,GPIO_IO_SET_GPG,&led_ctl)
printf("%s",buf)
pause()
close(testdev)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)