1. 程式人生 > >C語言linux環境下使用gettimeofday函式得到程式執行時間

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資料,最近換工作,公司使用的為

linuxC語言編譯報錯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文件,內容如下: 編譯: