跨平台的模組時間統計套件(C 編寫)

2021-06-04 21:32:35 字數 823 閱讀 6314

在編寫時間密集型程式時,我們經常需要統計某些模組(或函式)的時間消耗。在以往實踐中,這往往需要新增大量的測試**,費時費力。正好我目前在公司開發的各類**feedhandler恰好也是時間密集型程式,也常常需要測試模組的時間消耗,因此我開發了乙個小套件,極大簡化了程式各模組的時間統計。

demo**如下:

#include "stdafx.h"

#include // just include for testing demo.

#include using namespace std;

void test(int i)

int _tmain(int argc, _tchar* argv)

for(int i = 0; i < 3; ++i)

return 0;

}

demo執行效果如下:

從demo程式可以看出,測時套件的使用非常簡單:僅需在主線程中定義乙個tkit物件,然後在需要統計時間的模組內註冊tunit測時單件即可。

待程式執行結束後,會在最後輸出各模組的統計時間。使用方便,顯示明快!

幾點說明:

1. 計時精度精確到毫秒級(多數情況下夠用了)。

2. 示例套件僅採用了控制台的結果輸出方式,感興趣的朋友可以擴充套件為其他輸出方式(例如檔案, xml等)

3. 套件執行緒安全。不過如果在多執行緒中同時註冊名稱完全相同的測試單件,則套件執行結果未定義(但不會崩潰)。

當然,也可以對ctimerkit::addtime加互斥保護消除未定義的結果,有興趣的朋友可以試試。

有興趣的朋友可以將其封裝成dll(這還是比較簡單的)。

再說C模組的編寫(2)

前言 在 再說c模組的編寫 1 中主要總結了lua呼叫c函式時,對陣列和字串的操作,而這篇文章將重點總結如何在c函式中儲存狀態。什麼叫做在c函式中儲存狀態?比如你現在使用lua呼叫了c函式func1,但是func1中有一些資料在呼叫完以後儲存下來,供以後使用。而這些資料就是所謂的狀態,也就是我們需要...

再說C模組的編寫(1)

前言 在 lua 控制 c 中對lua呼叫c函式做了初步的學習,而這篇才是重中之重,這篇文章會重點的總結c模組編寫過程中遇到的一些問題,比如陣列操作 字串操作和c函式的狀態儲存等問題。現在就開始吧。陣列操作 在lua中應該不能叫陣列,而是一種table的東西 而在c語言中,沒有table這種東西,只...

C 跨平台開發的坑集合

std fstream open函式 void open const char filename,ios base openmode mode ios base in ios base out void open const string filename,ios base openmode mod...