網站首頁 編程語言 正文
時間函數在編寫代碼的時候會經常用到,下面就來總結一下clock和time函數的用法,函數原型如下:
clock_t __cdecl clock(void); __CRT_INLINE time_t __cdecl time(time_t *_Time);
clock函數
clock函數返回程序從運行開始到當前調用函數位置處CPU所使用的時間,通過這個函數就可以計算某段代碼運行時所使用的時間。
下面通過一段簡單的代碼測試一下:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char** argv) { clock_t start_t, end_t; start_t = clock(); sleep(1); end_t = clock(); printf("%d %d",start_t,end_t); return 0; }
剛進入程序時通過clock函數讀取當前CPU所使用的時間,然后使用sleep函數延時1秒,接著在使用clock函數讀取當前CPU所使用的時間,這樣這兩個時間差應該就是1秒。程序運行結果如下:
通過打印的結果可以看出,第一次讀取的CPU時間是0,第二次讀取的CPU時間是1000,在程序中延時了1秒,說明clock函數返回的時間單位是毫秒(ms)。
如果要將程序運行的時間換算為以秒為單位的話,這里就需要計算兩次運行的時間差,然后除以每秒鐘系統的計數次數。系統中每秒鐘的計數次數用一個宏定義的值來表示。
#define CLOCKS_PER_SEC 1000
這個CLOCKS_PER_SEC的值為1000,說明CPU1秒鐘計數1000次,也就是1ms計數一次,這個和上面分析的結果是一樣的。
修改程序,將時間換算為秒,繼續測試。
通過結果可以看出這個循環耗時32ms,也就是0.032s。
time函數
time函數返回的是從?1970-01-01 00:00:00?開始到現在所經過的秒數。
下面通過一個簡單的代碼演示一下time函數的用法。
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char** argv) { time_t seconds; seconds = time(NULL); printf("自1970-01-01 起的秒數:%d s",seconds); return 0; }
time函數返回值是一個time_t的類型,它的本質其實也是一個整形數據。
函數返回的是一個整形的秒數,將返回值打印出來,結果如下:
將這個秒數通過時間戳在線轉換網站轉換為年月日,轉換網址為: https://tool.lu/timestamp/ 轉換結果如下:
轉換后的時間和程序運行時的時間是一樣的,說明time函數返回的時間是準確的,這樣在程序運行過程中想要獲取準確的時間時,就可以通過time函數來獲取系統的準確時間。
總結
原文鏈接:https://blog.csdn.net/qq_20222919/article/details/122961892
相關推薦
- 2022-05-11 兩分鐘完成創建virtualbox創建k8s集群詳解
- 2022-10-16 python?sys模塊使用方法介紹_python
- 2022-06-24 SingleFlight模式的Go并發編程學習_Golang
- 2022-07-15 Android自定義view繪制表格的方法_Android
- 2022-03-12 用C語言實現圣誕樹(簡易版+進階版)_C 語言
- 2022-06-15 C語言詳解實現字符菱形的方法_C 語言
- 2022-10-06 uwsgi啟動django項目的實現步驟_python
- 2022-03-17 docker安裝rocketMQ和安裝過程中出現問題的解決_docker
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支