struct timeval结构体
生活随笔
收集整理的這篇文章主要介紹了
struct timeval结构体
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
struct timeval結構體在time.h中的定義為:
struct timeval
{
__time_t tv_sec;??? ??? /* Seconds. */
__suseconds_t tv_usec;??? /* Microseconds. */
};
其中,tv_sec為Epoch到創建struct timeval時的秒數,tv_usec為微秒數,即秒后面的零頭。比如當前我寫博文時的tv_sec為1244770435,tv_usec為442388,即當前時間距Epoch時間1244770435秒,442388微秒。需要注意的是,因為循環過程,新建結構體變量等過程需消耗部分時間,我們作下面的運算時會得到如下結果:
int i;
for (i = 0; i < 4; ++i)
{
gettimeofday(&tv, NULL);
printf("%d\t%d\n", tv.tv_usec, tv.tv_sec);
sleep(1);
}
442388??? 1244770435
443119??? 1244770436
443543??? 1244770437
444153??? 1244770438
前面為微秒數,后面為秒數,可以看出,在這個簡單運算中,只能精確到小數點后面一到兩位,或者可以看出,每進行一次循環,均需花費0.005秒的時間,用這個程序來作計時器顯然是不行的,除非精確計算產生的代碼消耗時間。 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
struct timeval
{
__time_t tv_sec;??? ??? /* Seconds. */
__suseconds_t tv_usec;??? /* Microseconds. */
};
其中,tv_sec為Epoch到創建struct timeval時的秒數,tv_usec為微秒數,即秒后面的零頭。比如當前我寫博文時的tv_sec為1244770435,tv_usec為442388,即當前時間距Epoch時間1244770435秒,442388微秒。需要注意的是,因為循環過程,新建結構體變量等過程需消耗部分時間,我們作下面的運算時會得到如下結果:
int i;
for (i = 0; i < 4; ++i)
{
gettimeofday(&tv, NULL);
printf("%d\t%d\n", tv.tv_usec, tv.tv_sec);
sleep(1);
}
442388??? 1244770435
443119??? 1244770436
443543??? 1244770437
444153??? 1244770438
前面為微秒數,后面為秒數,可以看出,在這個簡單運算中,只能精確到小數點后面一到兩位,或者可以看出,每進行一次循環,均需花費0.005秒的時間,用這個程序來作計時器顯然是不行的,除非精確計算產生的代碼消耗時間。 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的struct timeval结构体的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用gdb调试core文件
- 下一篇: malloc与calloc的区别