在編寫時間密集型程式時,我們經常需要統計某些模組(或函式)的時間消耗。在以往實踐中,這往往需要新增大量的測試**,費時費力。正好我目前在公司開發的各類**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...