1.不使用sleep,循环10000次

/* 1.c */#include <sys/time.h>
#include <stdio.h>void main(void)
{struct timeval start, end;int i;float time_use=0;gettimeofday(&start, NULL);for(i=0; i<10000; i++){;}gettimeofday(&end, NULL);time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒printf("time_use is %.10f\n",time_use);
}

运行结果:

time_use is 51.0000000000

2.使用sleep(0),循环10000次

/* 0.c */#include <sys/time.h>
#include <stdio.h>void main(void)
{struct timeval start, end;int i;float time_use=0;gettimeofday(&start, NULL);for(i=0; i<10000; i++){sleep(0);}gettimeofday(&end, NULL);time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒printf("time_use is %.10f\n",time_use);
}

运行结果:

time_use is 83.0000000000

3.使用usleep(0),循环10000次

/* 4.c */#include <sys/time.h>
#include <stdio.h>void main(void)
{struct timeval start, end;int i;float time_use=0;gettimeofday(&start, NULL);for(i=0; i<10000; i++){usleep(0);}gettimeofday(&end, NULL);time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒printf("time_use is %.10f\n",time_use);
}

运行结果:

time_use is 541044.0000000000

4.使用usleep(1),循环10000次

/* 2.c */#include <sys/time.h>
#include <stdio.h>void main(void)
{struct timeval start, end;int i;float time_use=0;gettimeofday(&start, NULL);for(i=0; i<10000; i++){usleep(1);}gettimeofday(&end, NULL);time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒printf("time_use is %.10f\n",time_use);
}

运行结果:

time_use is 553434.0000000000

5.使用usleep(2),循环10000次

/* 9.c */#include <sys/time.h>
#include <stdio.h>void main(void)
{struct timeval start, end;int i;float time_use=0;gettimeofday(&start, NULL);for(i=0; i<10000; i++){usleep(2);}gettimeofday(&end, NULL);time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒printf("time_use is %.10f\n",time_use);
}

运行结果:

time_use is 560403.0000000000

6.使用nanosleep,休眠0纳秒,循环10000次

/* 10.c */#include <sys/time.h>
#include <stdio.h>void main(void)
{struct timeval start, end;int i;float time_use=0;struct timespec ts;ts.tv_sec = 0;ts.tv_nsec = 0;gettimeofday(&start, NULL);for(i=0; i<10000; i++){nanosleep(&ts,NULL);}gettimeofday(&end, NULL);time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒printf("time_use is %.10f\n",time_use);
}

运行结果:

time_use is 542908.0000000000

7.使用nanosleep,休眠1纳秒,循环10000次

/* 3.c */#include <sys/time.h>
#include <stdio.h>void main(void)
{struct timeval start, end;int i;float time_use=0;struct timespec ts;ts.tv_sec = 0;ts.tv_nsec = 1;gettimeofday(&start, NULL);for(i=0; i<10000; i++){nanosleep(&ts,NULL);}gettimeofday(&end, NULL);time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒printf("time_use is %.10f\n",time_use);
}

运行结果:

time_use is 548566.0000000000

8.使用nanosleep,休眠1000纳秒,循环10000次

/* 7.c */#include <sys/time.h>
#include <stdio.h>void main(void)
{struct timeval start, end;int i;float time_use=0;struct timespec ts;ts.tv_sec = 0;ts.tv_nsec = 1000;gettimeofday(&start, NULL);for(i=0; i<10000; i++){nanosleep(&ts,NULL);}gettimeofday(&end, NULL);time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒printf("time_use is %.10f\n",time_use);
}

运行结果:

time_use is 551212.0000000000

9.使用nanosleep,休眠10000纳秒,循环10000次

/* 8.c */#include <sys/time.h>
#include <stdio.h>void main(void)
{struct timeval start, end;int i;float time_use=0;struct timespec ts;ts.tv_sec = 0;ts.tv_nsec = 10000;gettimeofday(&start, NULL);for(i=0; i<10000; i++){nanosleep(&ts,NULL);}gettimeofday(&end, NULL);time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒printf("time_use is %.10f\n",time_use);
}

运行结果:

time_use is 644741.0000000000

10.使用usleep(10),循环10000次

/* 5.c */#include <sys/time.h>
#include <stdio.h>void main(void)
{struct timeval start, end;int i;float time_use=0;gettimeofday(&start, NULL);for(i=0; i<10000; i++){usleep(10);}gettimeofday(&end, NULL);time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒printf("time_use is %.10f\n",time_use);
}

运行结果:

time_use is 641488.0000000000

11.每循环1000次,使用1次usleep(1),共循环10000次

/* 11.c */#include <sys/time.h>
#include <stdio.h>void main(void)
{struct timeval start, end;int i,j;float time_use=0;gettimeofday(&start, NULL);for(i=0,j=0; i<10000; i++,j++){if(0 == j%1000){usleep(1);}}gettimeofday(&end, NULL);time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒printf("time_use is %.10f\n",time_use);
}

运行结果:

time_use is 634.0000000000

linux c语言sleep的时间实验相关推荐

  1. linux c语言 线程sleep有关测试总结

    1.线程中不使用sleep,不会造成线程切换问题. 2.线程中使用sleep,会使cpu的占有率降低.让其他线程或进程,运行得更有效. 3.使用sleep(0)和不使用sleep,效果差别不大,都不会 ...

  2. c语言代码大全表解释_正点原子Linux第十章C语言版LED灯实验

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第十章C语言版LED灯实验 第八章我们讲解了如何用汇编语 ...

  3. linux c语言修改文件的时间属性,请教一个关于用标准C语言修改文件创建时间、修改时间和访问时间的问题。...

    请教一个关于用标准C语言修改文件创建时间.修改时间和访问时间的问题. 标准C里面有没有这种方法呢?我需要在Unix下运行,具体的是Solaris 9下,把某个目录下的所有文件的这三个时间属性都改成某年 ...

  4. SIM71004G模块使用Linux C语言实现打电话发短信

    为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. 一.实验目的: SIM71004G模块使用Linux C语言实现打电话发短信. 二 ...

  5. 《全面掌握Linux C语言嵌入式系统移植教程》学习笔记(Liunx速查简明)

    全面掌握Linux C语言嵌入式系统移植教程学习笔记(Liunx速查简明) 笔记前言: P3: shell命令简明 P4: vi /vim编辑器入门 P5:vi /vim编辑器扩展 P8: gcc编译 ...

  6. Linux之Ansible入门用法(实验解析)

    Linux之Ansible入门用法(实验解析) 实验前提: 三台CentOS7和一台CentOS6,其中一台CentOS7当作Ansible堡垒机,其余三台主机当作被控主机.四台主机均为最小化安装,全 ...

  7. c语言消字母游戏实验报告,C语言编程实验报告格式示例

    暨南大学数学系数学系,2011年语言课程设计课程实验项目目录学生姓名: 学生ID: 实验项目名称计划时间和课程每组人数实验属性开放要求要求摘要实验1熟悉使用WinTC / VC验证实验2数据类型,运算 ...

  8. linux系统下的程序开发报告册,linux系统及应用应用开发实验报告册

    (5)利用man显示date,echo等命令的手册页: (6)显示系统中的进程信息. 三 .实验软件 VMWare Workstation 5.0: Red hat linux 9.0: 四.实验主要 ...

  9. linux C语言多线程库pthread中条件变量的正确用法逐步详解

    linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群. 关于条件变量的典型应用,可以参 ...

最新文章

  1. Java之基础(1) - 编程中“为了性能”尽量要做到的一些地方
  2. ubuntu 18.04 LTS 国内源安装docker
  3. windows下怎么安装protobuf for python
  4. 连接虚拟机mysql无法访问_连接虚拟机mysql无法访问,报错编号1130的解决方法
  5. CRM WebClient UI错误消息的两种显示方式比较
  6. 在宽字节环境下获取EditBox中的CString转换为char[]
  7. ios注销所有通知_您一直想了解的有关iOS中通知的所有信息
  8. java gc回收算法_Java GC回收算法-判定一个对象是否可以回收
  9. Android Studio(16)---工程相关解析(各种文件,资源访问)
  10. STM32启动过程解析-2.02固件库启动文件分析
  11. PIE SDK矢量数据的读取
  12. aix-裸设备文件大小查看
  13. Linux下编译hiredis
  14. Java中print、printf、println的区别(转载)
  15. 紧急通知:阿里聚合直播盒子APP源码2019年5月以前的版本BUG
  16. List集合去重的几种方法
  17. u盘中毒文件为html文档,U盘中毒后文件夹被隐藏的恢复方法
  18. android如何修改视频的分辨率,Android录制视频,视频压缩,设置分辨率,设置视频名称...
  19. xshell xftp下载
  20. 利用VB批量增加行高,解决Excel打印字体显示不全问题

热门文章

  1. sweetalert2不兼容IE和360浏览器
  2. 刚刚!国资委公布“双百企业”最新名单!
  3. c/c++中int类型的负数用强制类型转化为long long类型的讨论
  4. 精心整理200道最新Java中高级工程师高频面试题
  5. 六大设计模式原则-单一职责原则
  6. 转 精辟,太生动了,太形象了。应用于实践,价值无比!
  7. 能救命的Apple Watch和双卡双待的iPhone来了
  8. 前端模板引擎——handlebars
  9. 【随笔】跳出程序员思维看世界
  10. 大专生出身?你会的还只有初级Java工程师的技术吗