C語言linux環境下使用gettimeofday函式得到程式執行時間
編寫的一個打字遊戲中需要計算程式的執行時間,通過網上查閱資料發現大多數都是說通過clock()函式來獲取時間,之後做差從而的到程式的執行時間。但是在linux中測試以後發現結果是0,並不能得到程式的執行時間。
請教老師後得知可以通過引用標頭檔案time.h,使用gettimeofday()函式。
通過man gettimeifday可以檢視詳細資訊:
SYNOPSIS
#include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
DESCRIPTION
The functions gettimeofday() and settimeofday() can get and set the
time as well as a timezone. The tv argument is a struct timeval (as
specified in <sys/time.h>):
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
and gives the number of seconds and microseconds since the Epoch (see
time(2)). The tz argument is a struct timezone:
struct timezone {
int tz_minuteswest; /* minutes west of Greenwich */
int tz_dsttime; /* type of DST correction */
};
函式會將系統時間儲存到引數 struct timeval中,結構體中的兩個變數分別為時間秒和微秒,timezone設為NULL即可。
用於計算程式執行時間只需在函式呼叫前後分別通過gettimeofday獲取時間做差即可求得。
下面為程式碼用例:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
struct timeval start,end;
gettimeofday(&start,NULL);
sleep(1);//需要測定時間的程式碼部分
gettimeofday(&end,NULL);
suseconds_t msec = end.tv_usec-start.tv_usec;
time_t sec = end.tv_sec-start.tv_sec;
printf("time used:%u.%us\n",sec,msec);
return 0;
}
執行結果:
測試環境為linux redhat系統。多次執行時間在微秒上會有所差別,在虛擬機器上波動會有點大。
這裡直接將微秒的差作為秒的小數部分,換算上還有些錯誤需要改進。
相關推薦
C語言linux環境下使用gettimeofday函式得到程式執行時間
編寫的一個打字遊戲中需要計算程式的執行時間,通過網上查閱資料發現大多數都是說通過clock()函式來獲取時間,之後做差從而的到程式的執行時間。但是在linux中測試以後發現結果是0,並不能得到程式的執行時間。 請教老師後得知可以通過引用標頭檔案time.h,使
在桌面Linux環境下開發圖形介面程式的方案對比
在Linux下開發GUI程式的方法有很多,比如Gnome桌面使用GTK+作為預設的圖形介面庫,KDE桌面使用Qt作為預設的圖形介面庫,wxWidgets則是另一個使用廣泛的圖形庫,此外使用Java中的Swing/AWT元件也可以用於開發Linux下的GUI應用。 本文將依次
Linux環境下多程序和多執行緒的優缺點
多程序更穩定(一個執行緒掛掉整個程式掛,而一個程序掛掉不會影響其它程序)。 多執行緒更快捷(每個程序都要維護專屬的虛擬地址空間,而每個執行緒共享一個虛擬地址空間,因此從排程開銷方面考慮多執行緒佔優)。 ===================================
【gettimeofday】測試程式執行時間
轉自:https://blog.csdn.net/u013806583/article/details/58127067普通的C程式已經驗證,核心模組的暫時還沒有驗證在測試程式時,往往需要了解程式執行所需的時間,在C語言中可以使用函式gettimeofday來得到時間。來不及
C語言編寫Copy程式(Linux環境下的操作)
COPY程式的編寫 (作者:Baron_wu 禁止轉載) 一、實驗描述 在這個實驗中,我們要做一個程式,這個程式是將一個檔案的內容複製到一個目標檔案。首先這個程式提示使用者輸入要複製的原始檔案的名字,以及要複製到的目標檔案的名字。 確保包括必要的錯誤檢查,包括確保原始檔案存在
C語言獲取當前時間(Linux環境下,VC6.0,Codeblock環境下通用)
在Linux環境下用C語言編寫程式獲取當前的時間只要呼叫其內部的函式即可。這些函式在 time.h 這個標頭檔案裡,第一個函式原型: ① time_t time(time_t *t),通過Linux的man也很方便能夠找到這個函式的相關說明: 在Linux環境的命令列模式中輸入 man 2 time即
[原始碼和文件分享]基於C語言的Linux環境下socket程式設計
一 需求分析 柏克萊套接字,又稱為BSD 套接字是一種應用程式介面,用於網際插座與Unix域套接字,包括了一個用C語言寫成的應用程式開發庫,主要用於實現程序間通訊,在計算機網路通訊方面被廣泛使用。 使用Berkeley套接字的系統有很多,本系統是在Ubuntu下用C語言進行socket程式設
C語言程式的編譯、連結具體過程及Linux環境下的具體例項
我們知道一個C語言程式從編寫完成到生成可執行檔案分為預處理、編譯、彙編、連結,最後再生成可執行檔案。 預處理階段 前處理器主要做四部分工作,分別是:標頭檔案展開、巨集替換、去註釋以及條件編譯。 (1)標頭檔案展開就是編譯器會根據字元#開頭的命令去讀取相
linux 環境下 c語言實現mysql資料庫圖片的儲存以及多資料庫直接的轉存
作為一個程式設計師,CSDN對我的程式設計帶來了很多幫助和提高,在這裡可以讓你找到很多開發過程中遇到的問題的解決辦法,今天也寫點自己積累的東西跟大家分享一下,希望對需要的人有幫助. 資料背景: 之前專案一直使用Oracle資料,最近換工作,公司使用的為
linux下C語言編譯報錯gets函式警告
linux C語言程式設計錯誤解決之 “warning: the `gets' function is dangerous and should not be used.” 問題出在程式中使用了 gets Linux 下gcc編譯器不支援這個函式,解決辦法是使用
linux環境下C語言實現非阻塞方式讀取字串資料的串列埠測試程式,即串列埠工具的編寫
一、前言 1.1 關於串列埠測試工具,網上已經有整合好的應用程式提供大家使用,但其只提供功能介面,內部具體怎麼實現的還需要自己去探索; 1.2 關於串列埠通訊的測試程式在網上已經是數見不鮮,但也不排除很多是直接“參考”別人的(ctrl+c),而且很多程式
Linux環境下編寫C程序
gcc gdb Linux環境下編寫包括頭文件C程序出 一:gcc編譯鏈接用法:gcc [選項] 文件...選項:-pass-exit-codes 在某一階段退出時返回最高的錯誤碼--help 顯示此幫助說明--target-help
[轉載總結]Linux環境下C++運行時動態鏈接庫加載要點總結
typedef symbol 類的方法 cout use per 解析 轉換 type 最近在看的一些web服務器源碼的擴展部分基本上都使用到了.so動態庫的運行時加載,也遇到了不少坑,看了不少網上的博客,在這裏稍微總結轉載一下,也是為了以後少走彎路。 首先需要了解的就是靜
Linux環境下c程序的編譯和執行
環境變量 動態 main.c tor direct 環境 沒有 stdlib.h share 1 單個文件的編譯和執行創建main.c文件,內容如下: #include <stdio.h> #include <stdlib.h> int main
linux環境下搭建Go語言開發環境並設定語法高亮
這個部落格是我自己從頭開始搭建,在設定語法高亮的時候碰到了很多問題,主要原因嘛,就是網上搜索很多東西,大多都是同樣的內容,但是根據這個內容根本搭建不出Go語言的開發環境,為了給大家減少不必要的麻煩,現在我以我搭建的過程給大家講一下。 我使用的環境是CentOS6.5版,使用的是虛擬機器版本,
Linux環境下,VSCode C++環境配置
作為在Windows環境下習慣使用Visual Studio IDE的人,對於Linux環境下的Vim編輯使用十分難受,雖然網上很多人說vim非常牛逼和強大,但是我更加習慣於使用VS code的介面,所以我選擇VS code作為編輯器使用。 VS code本身是一個編輯器,所以如果需要除錯等功能需要自己安裝
Linux環境下c程式的編譯和執行
1 單個檔案的編譯和執行建立main.c檔案,內容如下: #include <stdio.h> #include <stdlib.h> int main(void){ printf("Hello world!\n"); return 0; }; 編譯:
[原始碼和報告分享]Linux環境下的針對PL0語言的語法詞法語義分析
摘 要 此次編譯原理課程設計,我利用flex工具進行PL/0語言的詞法分析、自己用C++語言實現了LR語法分析、語義分析以及中間程式碼生成,我選擇的是布林表示式文法,對符合文法的布林表示式能夠產生相應四元式,處理了控制結構的真鏈與假鏈,對錯誤的表示式能夠給出錯誤提示。 鑑於flex工具原本來自Unix以及
Linux環境下如何編譯和執行c程式
1 單個檔案的編譯和執行 建立main.c檔案,內容如下: 編譯: 執行: 2 多個檔案的編譯和執行建立sum.c檔案,內容如下: 建立main.c檔案,內容如下: 編譯: 生成可執行檔案,檔名為main: 執行程式:
Linux環境下如何編譯和執行c程序
文件的 ron 當前 cto directory 變量 沒有 執行文件 nbsp 1 單個文件的編譯和執行 創建main.c文件,內容如下: 編譯: 執行: 2 多個文件的編譯和執行創建sum.c文件,內容如下: 創建main.c文件,內容如下: 編譯: