C++计时器:毫秒级和微秒级

1、毫秒级

  1. 使用GetTickCount()获取系统启动所经过的毫秒数
#include<iostream>
using namespace std;    

int main(){
    DWORD start= ::GetTickCount(); //获取毫秒级数目
    Sleep(1000);
    cout << ::GetTickCount() - start<< endl;
    system("pause");
}

   2. 使用clock()

#include <iostream>
#include <time.h>
#include <Windows.h>

using namespace std;

int main(){
    clock_t start;
    start = clock();
    Sleep(1000);
    cout<<clock()-start<<" ms"<<endl;
    system("pause");
}

2、微秒级

  1. 先用QueryPerformanceFrequency()获取时钟周期再调用QueryPerformanceCounter()获取CPU从开机以来执行的时钟周期数
#include <stdio.h>
#include <math.h>
#include <windows.h>  

using namespace std;

void main()
{
    LARGE_INTEGER cpuFreq;
    LARGE_INTEGER startTime;
    LARGE_INTEGER endTime;
    double rumTime=0.0;
    QueryPerformanceFrequency(&cpuFreq);
    QueryPerformanceCounter(&startTime);
    Sleep(1000);
    QueryPerformanceCounter(&endTime);
    rumTime = (((endTime.QuadPart - startTime.QuadPart) * 1000.0f) / cpuFreq.QuadPart);
    cout << rumtTime << " ms" << endl;
}
时间: 2024-10-11 12:28:26

C++计时器:毫秒级和微秒级的相关文章

shell脚本示例:计算毫秒级、微秒级时间差

有时候需要计算命令的执行时间长度,可以使用time命令,虽然time命令可以精确到毫秒级,但time命令无法计算一堆命令的执行时间.可以也可以直接使用date命令计算命令执行前后的时间差,但直接使用date命令计算时间差只能精确到秒级.因此,要计算毫秒级或者微秒级的时间长度,需要对date命令的结果进行一番计算转换. 本文只给出了毫秒级时间差的计算方法,若要计算微秒级时间差,对脚本稍作修改即可. 脚本如下: #!/bin/bash # filename: msec_diff.sh functio

windows下实现微秒级的延时

1.微秒级的延时肯定不能基于消息(SetTimer函数),因为一出现消息堵塞等就会影响精度,而且setTimer单位才是毫秒.实际响应时间可能要到55毫秒左右. 2.微秒级的延时也不能不能基于中断,VxD最快的时钟服务程序Set_Global_Time_Out函数才能保证1毫秒的精度.其他挂接int 8H中断处理函数等,只能保证55ms的精度.(有时还不能) 3.因此可以想到汇编下的那种基于循环执行语句的那种延时.但汇编那种代码不通用,跟cpu的频率有关. 所以可以用windows下的几个函数来

织女星开发板RISC-V内核实现微秒级精确延时

前言 收到VEGA织女星开发板也有一段时间了,好久没玩了,想驱动个OLED屏,但是首先要实现IIC协议,而实现IIC协议,最基本的就是需要一个精确的延时函数,所以研究了一下如何来写一个精确的延时函数.众所周知,ARM Cortex-M内核都有一个24位的SysTick系统节拍定时器,它是一个简易的周期定时器,用于提供时基,多为操作系统所使用.RV32M1的RISC-V内核也有一个SysTick定时器,只不过它不属于内核,而是使用的一个外部通用定时器,即LPIT0( low power perio

linux下C语言获取微秒级时间

使用C语言在linux环境下获得微秒级时间 1.数据结构 int gettimeofday(struct timeval*tv, struct timezone *tz); 其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果: struct timezone{ int tz_minuteswest;/*格林威治时间往西方的时差*/ int tz_dsttime;/*DST 时间的修正方式*/ } timezone 参数若不使用则传入NULL即可. 而结构体timeval的定义为: s

Flashtec NVRAM加速卡以次微秒级延迟实现一千五百万次 IOPS

Flashtec NVRAM加速卡以次微秒级延迟实现一千五百万次 IOPS EnterpriseTech PMC新近为超大规模数据中心的运营者及企业级存储供应商提供了一款崭新的产品,助其打造更为前卫的存储基础设施.PMC公司成立于三十年前,作为一家广受业界认可的半导体公司,过去专营通信领域的设备,于七年前进入企业存储市场.该公司刚刚研发成功了一款基于DRAM主内存与闪存混合的非易失性存储卡,实现了惊人的千万次IOPS(每秒输入/输出次数). 这一速度胜出仅仅基于NAND闪存的PCIe卡十倍之多,

windows下基于(QPC)实现的微秒级延时

1.为什么会写windows下微秒级延时 在上一篇 实现memcpy()函数及过程总结 中测试memcpy的效率中,测试时间的拷贝效率在微秒级别,需要使用微秒级时间间隔计数. windows下提供QueryPerformanceCounter(查询高性能计数器),QPC是基于硬件计数器,获取高分辨率时间戳. 参考:Acquiring high-resolution time stamps 应用形式: 1 LARGE_INTEGER start, end; 2 LARGE_INTEGER Freq

js对元素属性.内容的操作。定时器。元素的平级,父级,子集关系。

JS对元素内容的操作: 1.操作样式(style) 2.操作属性(Attribute) 3.操作内容(innerHtml/Text) 一.操作元素属性 常见属性:class.id.style.disabled. 自定义属性:可以自定义一个任意属性名称,可以任意放值,不会对所在元素本身有任何作用. this:代表所在最近的一个方法. 设置一个属性:a.setAttribute("属性名称","属性值");[不存在该属性名称时,创建这个属性,并赋值.当存在该属性名称时,

2017-3-31 js对元素属性.内容的操作。定时器。元素的平级,父级,子集关系。

JS对元素内容的操作: 1.操作样式(style) 2.操作属性(Attribute) 3.操作内容(innerHtml/Text) 一.操作元素属性 常见属性:class.id.style.disabled. 自定义属性:可以自定义一个任意属性名称,可以任意放值,不会对所在元素本身有任何作用. this:代表所在最近的一个方法. 设置一个属性:a.setAttribute("属性名称","属性值");[不存在该属性名称时,创建这个属性,并赋值.当存在该属性名称时,

通过$broadcast或$emit在子级和父级controller之间进行值传递

1 通过$broadcast或$emit在controller之间进行值传递,不过这些controller必须是子级或者父级关系, 2 $emit只能向父级parent controller传递事件event与数据data,$broadcast只能向子级child controller传递event与data,$on用于接收event与data. 3 <script> 4 var myapp=angular.module('myapp',[]); 5 myapp.controller('Sel