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下没有创建时间的概念,也就是 ...
随机推荐
- cocos2dx游戏开发——捕鱼达人mini版学习笔记(二)——MainMenu的搭建
一.创建文件~ MainMenuScene.h MainMenuScene.cpp MainMenuLayer.h MainMenuLayer.cpp 那个场景的搭建就不多说了,那个我的打 ...
- 添加网页ico
<link rel="Shortcut Icon" href="/favicon.ico" />
- POJ3252 Round Numbers(不重复全排列)
题目问区间有多少个数字的二进制0的个数大于等于1的个数. 用数学方法求出0到n区间的合法个数,然后用类似数位DP的统计思想. 我大概是这么求的,确定前缀的0和1,然后后面就是若干个0和若干个1的不重复 ...
- FZU2215 Simple Polynomial Problem(中缀表达求值)
比赛时没做出这题太可惜了. 赛后才反应过来这就是个中缀表达式求值,数字栈存的不是数字而是多项式. 而且,中缀表达式求值很水的,几行就可以搞定. #include<cstdio> #incl ...
- Machine Schedule
Machine Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 浅谈Apache Spark的6个发光点(CSDN)
Spark是一个基于内存计算的开源集群计算系统,目的是更快速的进行数据分析.Spark由加州伯克利大学AMP实验室Matei为主的小团队使用Scala开发开发,其核心部分的代码只有63个Scala文件 ...
- 密码等级:至少包含字母、大小写数字、字符中的两种 JS实现方案
前言 密码,如果设置的太简单,很容易就被攻破,所以很多网站将密码设置的要求设置的挺严格,一般是字母.数字.字符3选2,区分大小写.对于设置得太简单的密码,予以错误提示.或者予以密码等级(低中高)显示, ...
- TYVJ P1034 尼克的任务 Label:倒推dp
背景 题库靠大家,人人都爱它. 描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成.尼克的一个工作 ...
- [Cocos2d-x For WP8]Hello world
[Cocos2d-x For WP8]Hello world Cocos2d-x For WP8使用C++开发,使用cocos2d-xv0.13同样的接口,Cocos2d-x For WP8的相关项目 ...
- Chromium的UI绘制初探
转载请注明出处:http://www.cnblogs.com/fangkm/p/3943896.html 常见的UI库的绘制逻辑 任何一个成熟的界面框架都有一个相当复杂的结构,消息循环的处理.控件的布 ...