嗯?time命令Linux time // 对比印象中的time()函数
1.time(); 函數(shù)
函數(shù)原型: time_t time(time_t *timer)
函數(shù)用途: 得到機(jī)器的日歷時(shí)間或者設(shè)置日歷時(shí)間
頭 文 件: time.h
輸入?yún)?shù): timer=NULL時(shí),得到機(jī)器日歷時(shí)間, =時(shí)間數(shù)值時(shí) 用于設(shè)置日歷時(shí)間;
/* ?time - 獲取計(jì)算機(jī)系統(tǒng)當(dāng)前的日歷時(shí)間(Calender Time)
?* ? ? ? ? 處理日期時(shí)間的函數(shù)都是以本函數(shù)的返回值為基礎(chǔ)進(jìn)行運(yùn)算
?*
?* ?函數(shù)原型:
?* ? ? ?#include <time.h>
?* ?
?* ? ? ?time_t time(time_t *calptr);
?*
?* ?返回值:
?* ? ? ?成功:秒數(shù),從1970-1-1,00:00:00
?*
?* ?使用:
?* ? ? ?time_t now;
?* ?
?* ? ? ?time(&now); // == now = time(NULL);
?*/
time_t是一個(gè)long類型
time_t實(shí)際上是長(zhǎng)整型,到未來(lái)的某一天,從一個(gè)時(shí)間點(diǎn)(一般是1970年1月1日0時(shí)0分0秒)到那時(shí)的秒數(shù)(即日歷時(shí)間)超出了長(zhǎng)整形所能表示的數(shù)的范圍怎么辦?對(duì)time_t數(shù)據(jù)類型的值來(lái)說(shuō),它所表示的時(shí)間不能晚于2038年1月18日19時(shí)14分07秒。為了能夠表示更久遠(yuǎn)的時(shí)間,一些編譯器廠商引入了64位甚至更長(zhǎng)的整形數(shù)來(lái)保存日歷時(shí)間。比如微軟在Visual C++中采用了__time64_t數(shù)據(jù)類型來(lái)保存日歷時(shí)間,并通過(guò)_time64()函數(shù)來(lái)獲得日歷時(shí)間(而不是通過(guò)使用32位字的time()函數(shù)),這樣就可以通過(guò)該數(shù)據(jù)類型保存3001年1月1日0時(shí)0分0秒(不包括該時(shí)間點(diǎn))之前的時(shí)間。
2.time命令
當(dāng)測(cè)試一個(gè)程序或比較不同算法時(shí),執(zhí)行時(shí)間是非常重要的,一個(gè)好的算法應(yīng)該是用時(shí)最短的。所有類UNIX系統(tǒng)都包含time命令,使用這個(gè)命令可以統(tǒng)計(jì)時(shí)間消耗。例如:
[root@localhost ~]# time ls anaconda-ks.cfg install.log install.log.syslog satools textreal 0m0.009s user 0m0.002s sys 0m0.007s輸出的信息分別顯示了該命令所花費(fèi)的real時(shí)間、user時(shí)間和sys時(shí)間。
- real時(shí)間是指掛鐘時(shí)間,也就是命令開(kāi)始執(zhí)行到結(jié)束的時(shí)間。這個(gè)短時(shí)間包括其他進(jìn)程所占用的時(shí)間片,和進(jìn)程被阻塞時(shí)所花費(fèi)的時(shí)間。
- user時(shí)間是指進(jìn)程花費(fèi)在用戶模式中的CPU時(shí)間,這是唯一真正用于執(zhí)行進(jìn)程所花費(fèi)的時(shí)間,其他進(jìn)程和花費(fèi)阻塞狀態(tài)中的時(shí)間沒(méi)有計(jì)算在內(nèi)。
- sys時(shí)間是指花費(fèi)在內(nèi)核模式中的CPU時(shí)間,代表在內(nèi)核中執(zhí)系統(tǒng)調(diào)用所花費(fèi)的時(shí)間,這也是真正由進(jìn)程使用的CPU時(shí)間。
shell內(nèi)建也有一個(gè)time命令,當(dāng)運(yùn)行time時(shí)候是調(diào)用的系統(tǒng)內(nèi)建命令,應(yīng)為系統(tǒng)內(nèi)建的功能有限,所以需要時(shí)間其他功能需要使用time命令可執(zhí)行二進(jìn)制文件/usr/bin/time。
使用-o選項(xiàng)將執(zhí)行時(shí)間寫(xiě)入到文件中:
/usr/bin/time -o outfile.txt ls使用-a選項(xiàng)追加信息:
/usr/bin/time -a -o outfile.txt ls使用-f選項(xiàng)格式化時(shí)間輸出:
/usr/bin/time -f "time: %U" ls-f選項(xiàng)后的參數(shù):
| %E | real時(shí)間,顯示格式為[小時(shí):]分鐘:秒 |
| %U | user時(shí)間。 |
| %S | sys時(shí)間。 |
| %C | 進(jìn)行計(jì)時(shí)的命令名稱和命令行參數(shù)。 |
| %D | 進(jìn)程非共享數(shù)據(jù)區(qū)域,以KB為單位。 |
| %x | 命令退出狀態(tài)。 |
| %k | 進(jìn)程接收到的信號(hào)數(shù)量。 |
| %w | 進(jìn)程被交換出主存的次數(shù)。 |
| %Z | 系統(tǒng)的頁(yè)面大小,這是一個(gè)系統(tǒng)常量,不用系統(tǒng)中常量值也不同。 |
| %P | 進(jìn)程所獲取的CPU時(shí)間百分百,這個(gè)值等于user+system時(shí)間除以總共的運(yùn)行時(shí)間。 |
| %K | 進(jìn)程的平均總內(nèi)存使用量(data+stack+text),單位是KB。 |
| %w | 進(jìn)程主動(dòng)進(jìn)行上下文切換的次數(shù),例如等待I/O操作完成。 |
| %c | 進(jìn)程被迫進(jìn)行上下文切換的次數(shù)(由于時(shí)間片到期)。 |
總結(jié)
以上是生活随笔為你收集整理的嗯?time命令Linux time // 对比印象中的time()函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: setsockopt()函数 参数详解
- 下一篇: 微信小程序 获取用户信息 官网例程 详解