1. 程式人生 > >C/C++中計算函式執行時間的兩種方法

C/C++中計算函式執行時間的兩種方法

       在寫程式碼中,有時候我們需要評估某段程式碼或者函式的執行時間;方法就是在該段程式碼或者函式前面,記錄一個時間T1,在程式碼段或函式後面記錄時間T2,那其執行時間就是T2-T1,下面看看具體運算方法:

方法一:

       clock()是C/C++中的計時函式,而與其相關的資料型別是clock_t;  標頭檔案:time.h/ctime

       在C/C++中,還定義了一個常量CLOCKS_PER_SEC,它用來表示一秒鐘會有多少個時鐘計時單元,其定義如下:
       
        #define    CLOCKS_PER_SEC      ((clock_t)1000)

程式碼實現:

#include “stdio.h”    
#include “stdlib.h”    
#include “time.h”    
int main( void )    
{    
   long    i = 10000000L;    
   clock_t start, finish;    
   double  duration;    
   /* 測量一個事件持續的時間*/    
   printf( "Time to do %ld empty loops is ", i );    
   start = clock();    
   while( i-- )      ;    
   finish = clock();    
   duration = (double)(finish - start) / CLOCKS_PER_SEC;    
   printf( "%f seconds\n", duration );    
   system("pause");    
}    
  1. 在筆者的機器上,執行結果如下:        
  1. Time to do 10000000 empty loops is 0.03000 seconds  
方法二:

函式原型:DWORD GetTickCount(void);
標頭檔案:    C/C++標頭檔案:winbase.h

windows程式設計中可以使用標頭檔案

 核心函式                標頭檔案          函式庫         精度        準確度

     ftime                sys/timeb.h       c函式           ms         較準確


#include <time.h> 
#include <stdio.h> 
#include <tchar.h> 
#include <sys/timeb.h> 
#include<Windows.h> 
int main()
{
struct timeb startTime, endTime;
ftime(&startTime);
Sleep(1000);
ftime(&endTime);
printf("time: %d ms\n", (endTime.time - startTime.time) * 1000 
+ (endTime.millitm - startTime.millitm));
return 0;
}

方法三:

GetTickCount是函式。GetTickCount返回(retrieve)從作業系統啟動所經過(elapsed)的毫秒數,它的返回值是DWORD。

#include<iostream>  
#include<Windows.h>  
  
using namespace std;  
  
int main()  
{  
    DWORD start_time = GetTickCount();  
    for (int i = 0; i < 100000000; i++)  
    {  
        i++;  
    }  
    DWORD end_time = GetTickCount();  
    cout << "The run time is:" << (end_time - start_time) << "ms!" << endl;  
    system("pause");  
    return 0;  
}


相關推薦

C/C++計算函式執行時間方法

       在寫程式碼中,有時候我們需要評估某段程式碼或者函式的執行時間;方法就是在該段程式碼或者函式前面,記錄一個時間T1,在程式碼段或函式後面記錄時間T2,那其執行時間就是T2-T1,下面看看具體

C語言如何計算演算法執行時間

C/C++中的計時函式是clock(),而與其相關的資料型別是clock_t。在MSDN中,查得對clock函式定義如下: clock_t clock( void ); 這個函式返回從“開啟這個程式程序”到“程式中

C語言程式設計 計算程式執行時間 精確到微秒

在開發過程中有時候需要計算一段程式碼執行所消耗的時間 ,使用函式gettimeofday就可以實現,並且可以精確到毫秒 gettimeofday函式原型為:      int gettimeofday(struct timeval *tv, struct timezone

linux計算函式執行時間

#ifndef _TIME_USED_H_ #define _TIME_USED_H_ #include <stdio.h> #include <sys/time.h> //

計算函式執行時間

# coding = utf-8from functools import wraps import time def func1(func): @wraps(func) def call_func(*args, **kwargs): start2 = ti

golang一行程式碼計算函式執行時間

package mainimport(        "fmt"        "time")func main(){        defer timeCost(time.Now())        fmt.Println("start program")        time.Sleep(5*time.

C#實現向已存在的Excel檔案寫入資料例項(方法

 //新增引用 using Excel = Microsoft.Office.Interop.Excel; using System.Reflection; 方法一:將識別結果寫入到Excel表格中(根據指定模版寫入,並將其以當前儲存時間命名另存)            

使用python裝飾器計算函式執行時間

裝飾器在python裡面有很重要的作用, 如果能夠熟練使用,將會大大的提高工作效率 今天就來見識一下 python 裝飾器,到底是怎麼工作的。 本文主要是利用python裝飾器計算函式執行時間 一

go利用defer計算函式執行時間

package main import ( "time" "fmt" ) func a() int { defer b(time.Now()) // 這裡不會呼叫b(), 但

C++】int轉換為string的方法(to_string、字串流)轉載

int轉換成string的兩種方法 第一種是to_string函式,這是C++11新增的,使用非常方便,簡單查了下:C++11標準增加了全域性函式std::to_string,以及std::stoi/stol/stoll等等函式(這幾個就是string轉int,long,以及long lo

vs C++ 靜態庫 生成以及使用的方法

C++靜態庫的生成 1、 vs專案配置:選擇 靜態庫 2、 新建標頭檔案 add.h 3、 新建標頭檔案 add.cpp 4、 執行“生成解決方案”,工程DEBUG目錄如下: C++靜態庫的使用 方法一 1、 新建 win32控制檯應用程式 2、 專案屬性-->c/c

對CUDA核心函式執行時間測量的方法

方法一: cudaEvent_t start1;   cudaEventCreate(&start1);   cudaEvent_t stop1;   cudaEventCreate(&stop1);   cudaEventRecord(start

C++】int轉換為string的方法(to_string、字串流)

記錄一下用到過的int轉換成string的兩種方法 第一種是to_string函式,這是C++11新增的,使用非常方便,簡單查了下:C++11標準增加了全域性函式std::to_string,以及std::stoi/stol/stoll等等函式(這幾個就是string轉i

C#實現匯入匯出Excel資料的方法詳解

這篇文章主要為大家詳細介紹了C#匯入匯出Excel資料的兩種方法,具有一定的參考價值,感興趣的小夥伴們可以參考一下本文為大家分享了C#匯入匯出Excel資料的具體程式碼,供大家參考,具體內容如下注:對於實體類物件最好新建一個並且繼承原有實體類,這樣可以將型別進行修改;方法一:

C++ 將int轉換為string的方法【to_string和sstream】

第一種是to_string函式,C++11新特性,使用非常方便,簡單查了下:c++11標準增加了全域性函式std::to_string,以及std::stoi/stol/stoll等等函式(這幾個就是

Linux下的函式執行時間的統計方法(測試某個函式執行時間)

重點:一般用    通過gettimeofday函式:如何測試某個函式的執行時間是做實驗時經常用到的功能,在此比較Linux下的測試函式,主要是其精確度。我們採用統一的測試標準程式(standard.c): #include <stdio.h>#define MA

向HTML插入視頻有方法

rip 新版 服務 解決 all top 解決方案 5.0 ref 向HTML中插入視頻有兩種方法,一種是古老的object標簽,一種是html5中的video標簽,前者兼容性相對好些,後者兼容性讓人頭疼。最常用的向HTML中插入視頻的方法有兩種,一種是古老的<obj

Easyui 彈出加載的遮罩的方法

datagrid IT hellip pla itl width UNC message function 第一種: //彈出加載層function load() { $("<div class=\"datagrid-mask\"></div&

除法求模求逆元的方法

除法 模運算 擴展歐幾裏得 tps sdn 求解 blog span emma   今天下午還是有點閑的,不想刷題,不想補題,突然想起昨天的training 3裏I題涉及到除法取模的問題,就來總結一下   首先對於模運算來說,是沒有對於除法的取模的(即沒有(a/b)%mod

pythonlist轉csv的方法

方法一: name_attribute = ['NumberID','UserID','ModuleID','StartDate','EndDate','Frequent'] writerCSV=pd.DataFrame(columns=name_attribute,data=data) wr