linux 不能用clock 计算sleep的时间
http://bbs.csdn.net/topics/390558707
在Windows Sleep()占用processor time,Linux下的sleep()不占用processor time,这可能与底层的sleep()实现机制的不同所导致的。
clock(), sleep(), Sleep()在windows和Linux的区别
最近在ARM上的Linux进行开发,需要将Windows下编写的C程序移植到Linux上去,其中需要将底层的SPI驱动实现,以及上层的Socket通信改写,其中应用程序也需要改变一些,整个过程中,让程序顺利跑起来没花费大的力气,这里要感谢强大的Eclipse +ARM-linux-gcc组合,但是在调试过程中,发现很多有趣的问题,其中一个就是关于Windows下的Sleep()函数和Linux下的sleep()函数的区别。
在windows下的Sleep()函数需要包含windows.h头文件,而在Linux下需要包含的头文件是unistd.h头文件,说明sleep()函数不是标准的C语言库,而且在Windows下Sleep()睡眠时间为毫秒,而Linux下的sleep()函数时间为秒,如果需要实现更精确的时间,Linux下可以采用usleep()函数,微妙级别,在Windows下貌似没有更精确的,只能到毫秒级别(个人观点,还没证实)。说到这,其实windows和Linux的区别其实还是非常小,和clock()函数组合后,发现了其中的不同,其中clock()函数是标准的C语言库提供的函数,功能如下:
clock returns the processor time used by program since the beginning of the execution, or -1 if unavailable. clock() / CLOCKS_PER_SEC is a time in seconds.
这里提到clock()函数返回的程序运行过程耗掉得process time,也就是CPU time,在windows下和Linux下,我们分别测试如下代码:
Windows:
- #include <stdio.h>
 - #include <time.h>
 - #include <windows.h>
 - int main()
 - {
 - printf("The start clock is: %ld\n", clock());
 - Sleep(2000);
 - printf("The end clock is: %ld\n", clock());
 - return 0;
 - }
 
Linux:
- #include <stdio.h>
 - #include <time.h>
 - #include <unistd.h>
 - int main()
 - {
 - printf("The start clock is: %ld\n", clock());
 - sleep(2);
 - printf("The end clock is: %ld\n", clock());
 - return 0;
 - }
 
运行的结果:
Windows:
- The start clock is: 1
 - The end clock is: 2001
 
Linux:
- The start clock is: 0
 - The end clock is: 0
 
这说明在Windows Sleep()占用processor time,Linux下的sleep()不占用processor time,这可能与底层的sleep()实现机制的不同所导致的。
linux 不能用clock 计算sleep的时间的更多相关文章
- [fw]Linux系统使用time计算命令执行的时间
		
Linux系统使用time计算命令执行的时间 当测试一个程序或比较不同算法时,执行时间是非常重要的,一个好的算法应该是用时最短的.所有类UNIX系统都包含time命令,使用这个命令可以统计时间消耗.例 ...
 - 转载:Linux下查看/修改系统时区、时间
		
一.查看和修改Linux的时区 1. 查看当前时区 命令 : "date -R" 2. 修改设置Linux服务器时区 方法 A 命令 : "tzselect" ...
 - QT在linux环境下读取和设置系统时间(通过system来直接调用Linux命令,注意权限问题)
		
QT在Linux环境下读取和设置系统时间 本文博客链接:http://blog.csdn.NET/jdh99,作者:jdh,转载请注明. 环境: 主机:Fedora12 开发软件:QT 读取系统时间 ...
 - C:clock() 计算代码执行时间
		
clock():捕捉从程序开始运行到clock()被调用时所耗费的事件. 这个时间的单位是 clock tick,即时钟打点 常数 CLK_TCK:机器时钟每秒走的时钟打点数 要使用这个函数需要包含头 ...
 - (笔记)Linux内核学习(八)之定时器和时间管理
		
一 内核中的时间观念 内核在硬件的帮助下计算和管理时间.硬件为内核提供一个系统定时器用以计算流逝的时间.系 统定时器以某种频率自行触发,产生时钟中断,进入内核时钟中断处理程序中进行处理. 墙上时间和系 ...
 - OK335xS Linux kernel check clock 24M hacking
		
/****************************************************************************** * OK335xS Linux kern ...
 - 5 个在 Linux 中管理文件类型和系统时间的有用命令
		
对于想学习 Linux 的初学者来说要适应使用命令行或者终端可能非常困难.由于终端比图形用户界面程序更能帮助用户控制 Linux 系统,我们必须习惯在终端中运行命令.因此为了有效记忆 Linux 不同 ...
 - linux 用户空间获得纳秒级时间ns
		
一.引言 我们在测试程序的性能的时候往往需要获得ns级的精确时间去衡量一个程序的性能,下面介绍下linux中用户空间获得ns级时间的方法 二.用户空间获得ns级时间 使用clock_gettime函数 ...
 - 【转载】在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间
		
在windows下,一个文件有:创建时间.修改时间.访问时间.而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 两者有此不同,在Linux下没有创建时间的概念,也就是 ...
 
随机推荐
- 用DTD约束XML详解及示例
			
文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. dtd的三种引入方式 (1)引入外部的dtd文件 <!DOCTYPE 根元素名称 SYSTE ...
 - 【xml  报错】xml编译错误
			
---恢复内容开始--- 有时候在xml文件中,特别是于Spring相关的配置文件中,会出现一些不影响程序正常运行的编译错误,如: Referenced file contains errors (h ...
 - 构造 hihocoder 1257 Snake Carpet (15北京I)
			
题目传送门 题意:贪吃蛇,要求长度奇数的蛇转弯次数为正奇数,长度偶数转弯次数为正偶数,且组成矩形.(北大出的题咋都和矩形相关!!!) 分析:构造找规律,想到就简单了.可以构造 宽:(n + 1) / ...
 - Codeforces Round #294 (Div. 2)
			
水 A. A and B and Chess /* 水题 */ #include <cstdio> #include <algorithm> #include <iost ...
 - 模拟 CSU 1562 Fun House
			
题目传送门 /* 题意:光线从 '*' 发射,遇到 '/' 或 '\' 进行反射,最后射到墙上,将 'x' 变成 '&' 模拟:仔细读题,搞清楚要做什么,就是i,j的移动,直到撞到墙,模拟一下 ...
 - BZOJ3821 : 玄学
			
对操作建立线段树,每个节点维护一个有序的操作表,表示用$[l,r]$的操作在每段区间上的作用效果. 对于一个线段树节点,合并左右儿子信息只在该区间刚刚被填满时进行,利用归并排序,时间复杂度为$O(n\ ...
 - Ubuntu根目录下各文件夹的功能详细介绍
			
Ubuntu的根目录下存在着很多的文件夹,但你知道他们都存放着哪些文件呢?这些是深入了解Ubuntu系统必不缺少的知识,本文就关于此做一下介绍吧. /bin/ 用以存储二进制可执行命令文件. / ...
 - hdu-acm steps Max sum
			
/*求最大字段和,d[i]表示已 i 结尾(字段和中包含 i )在 a[1..i] 上的最大和,d[i]=(d[i-1]+a[i]>a[i])?d[i-1]+a[i]:a[i];max = {d ...
 - hdu Strange fuction
			
本题是一道二分题,但是要利用导数来求最小值.对原函数进行求导,得到的导函数为f(x)=42*pow(x,6)+48*pow(x,5)+21*pow(x,2)+10*x-y;因为0<=x<= ...
 - Disaster recovery best practices for Symantec Endpoint Protection 12.1
			
https://support.symantec.com/en_US/article.TECH160736.html