Linux系统
使用gettimeofday接口:gettimeofday能得到微秒数,比毫秒还要更精确。
#include <stdio.h>
#include <sys/time.h>
int main() {
struct timeval start, end;
gettimeofday( &start, NULL );
sleep(3);
gettimeofday( &end, NULL );
int timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec - start.tv_usec;
printf("time: %d us\n", timeuse);
return 0;
}
使用ftime接口:
#include <stdio.h>
#include <sys/timeb.h>
long long getSystemTime() {
struct timeb t;
ftime(&t);
return 1000 * t.time + t.millitm;
}
int main() {
long long start=getSystemTime();
sleep(3);
long long end=getSystemTime();
printf("time: %lld ms\n", end-start);
return 0;
}
Windows系统
使用GetTickCount接口:
#include <windows.h>
#include <stdio.h>
int main() {
DWORD start, stop;
start = GetTickCount();
Sleep(3000);
stop = GetTickCount();
printf("time: %lld ms\n", stop - start);
return 0;
}
Windows系统下有些编译器使用printf输出64位整数参数要使用%I64d,比如VC。
使用QueryPerformanceX接口:
#include <windows.h>
#include <stdio.h>
int main(){
LARGE_INTEGER li;
LONGLONG start, end, freq;
QueryPerformanceFrequency(&li);
freq = li.QuadPart;
QueryPerformanceCounter(&li);
start = li.QuadPart;
Sleep(3000);
QueryPerformanceCounter(&li);
end = li.QuadPart;
int useTime =(int)((end - start) * 1000 / freq);
printf("time: %d ms\n", useTime);
return 0;
}
使用GetSystemTime接口:
#include <windows.h>
#include <stdio.h>
int main(){
SYSTEMTIME currentTime;
GetSystemTime(¤tTime);
printf("time: %u/%u/%u %u:%u:%u:%u %d\n",
currentTime.wYear,currentTime.wMonth,currentTime.wDay,
currentTime.wHour,currentTime.wMinute,currentTime.wSecond,
currentTime.wMilliseconds,currentTime.wDayOfWeek);
return 0;
}
分享到:
相关推荐
在C/C++编程中,获取系统的毫秒、微秒或纳秒级时间差是常见的需求,特别是在性能测试、定时任务或者高精度计时场景中。本文将详细介绍四种常用的方法。 ### 方法一:利用 `SYSTEMTIME` `SYSTEMTIME` 结构体是...
在C++编程中,获取当前时间并精确到毫秒是一个常见的需求,特别是在处理高精度的时间戳或者性能测试等场景。本文将深入探讨如何在C++中实现这一功能,以及涉及的相关知识点。 首先,C++标准库提供了一个名为`...
但`time()`函数返回的是当前时间的秒数,并不能直接获得毫秒数。为了得到当前时间的毫秒数,通常有以下两种方法: 第一种方法是使用`microtime()`函数。这个函数返回当前时间的微秒数和秒数,格式为"msec sec"。秒...
### 单片机C语言中的延时程序设计与...通过合理地选择和配置循环次数以及循环变量的类型,可以在不牺牲精度的同时获得更宽泛的延时范围。此外,对于极端高精度的要求,可以考虑使用硬件定时器等其他技术手段来实现。
在C语言中,可以使用GetTickCount函数来获取系统运行的时间,该函数返回从系统启动到现在的毫秒数。下面是一个简单的示例代码: ```c #include "stdafx.h" #include #include void main(){ long t1=GetTickCount...
本文将基于给定的信息,详细介绍C语言中延时函数的设计原理、实现方法以及如何获得较为精确的延时效果。 #### 二、延时函数的重要性与应用场景 在单片机应用中,延时函数主要用于以下几种场景: - **定时操作**:...
为了精确到秒,我们可以直接使用这个函数,但要注意的是,`time()`返回的时间戳是基于秒的,并不包括毫秒或微秒级别的精度。 要提高计时器的精度,可以使用`<sys/time.h>`头文件中的`gettimeofday()`函数。这个函数...
在C语言中,暂停功能可以通过`Sleep()`函数实现,该函数在Windows环境下可用,接收毫秒数作为参数。此外,也可以通过`clock()`函数实现自定义的暂停逻辑,通过循环检查当前时间和起始时间的差值来达到目的。例如: ...
在操作系统设计中,进程调度是核心功能之一,它负责决定哪个进程应该在什么时候获得CPU的执行权。时间片轮转调度算法是一种常见的进程调度策略,尤其适用于多用户环境,如分时系统。本文将深入探讨时间片轮转调度...
该系统采用C语言编写,通过定时器中断的方式更新时间,并能够根据不同的月份调整日期。项目主要包括硬件设计、软件编程两大部分。 #### 二、关键技术点解析 ##### 2.1 硬件部分 1. **AT89C52单片机**: AT89C52是一...
贪吃蛇游戏是一款经典的休闲娱乐小游戏,玩家通过控制蛇头移动方向,使蛇身增长并获得分数。在本游戏中,蛇在一个由字符构成的矩形区域内移动,吃到食物后蛇身会变长,碰到墙壁或自己则游戏结束。 #### 二、程序...
最后,尽管已经获得了精湛的画质提升技能,团队也没有就此抛弃机器学习的力量。 因为在拯救静止画作 (而非动画) 的时候,Anime4K的短板显现了。这时候,让机器学习选手waifu2x和它并肩作战,更加成功一些: ...
由于其强大的功能和丰富的外部接口,如I2C总线、ADC、看门狗、PWM等,8051单片机成为许多制造商的首选平台。 书中提到,虽然主要针对的是C语言编程,但也需要读者具备一定的8051汇编语言基础,因为部分章节会涉及到...
为了实现这一点,可以使用C库中的`clock()`函数(需要包含`time.h`头文件)来获取当前时间,并根据目标帧率计算每帧之间的间隔时间。例如,30FPS意味着每帧之间需要等待大约33.3毫秒。 #### 三、高级技巧 ##### 1. ...
精确到微秒级、毫秒级、秒级、分钟级;、 还可获取当前时间戳
C语言制作简单计算器 本文介绍了使用C语言制作一个简单计算器的过程,实现基本的加、减、乘、除操作。程序的主要步骤包括:获得用户输入、检查输入、执行计算和显示结果。 一、项目介绍 本项目的目的是使用C语言...
例如,在11.059MHz的时钟频率下,每秒可执行约921,583条指令,每条指令大约需要1.085毫秒来完成。 #### 四、存储器结构 - **CODE区**:代码段用于存储可执行代码,16位寻址,容量可达64KB。通常使用EEPROM作为外接...
- 设置TMR2定时器预分频器以获得合适的定时周期。 - 在中断服务程序中改变RB0的状态,实现方波的输出。 - 在主循环中初始化TMR2定时器和中断。 - **关键代码片段:** ```c #pragma config oscillator=INTOSCIO_...
在Linux或Unix系统中,C语言提供了`time()`函数,可以获取自1970年1月1日以来的秒数。为了达到毫秒级精度,可以使用`gettimeofday()`函数,它返回包含秒和微秒的结构体。而在C++环境中,可以使用`<chrono>`库与上述...