自己寫了一段測試程式,比較c++ io讀和c語言的io讀的效率:
long tickcount = gettickcount();//取得系統啟動後的時間(miliseconds)
int k = 0;
cout << "for c api " << endl;
for (int i = 0; i < 10000; ++i)
file* f = fopen("c://temp//test.txt", "rb");
if (null != f)
if (fseek(f, 0, seek_end) == 0)
int length = ftell(f);
fseek(f, 0, seek_set);
char* p = (char*)malloc(length*sizeof(char) + 1);
if (p != null)
fread((void*)p, length, 1, f );
p[length] = '/0';
// cout << p << endl;
free(p);
fclose(f);
k++;
long newtickcount = gettickcount();
cout << "repeated times: " << k << endl;
cout << "time costed" << newtickcount - tickcount << endl;
tickcount = gettickcount();
cout << "for c++ api" << endl ;
int j = 0;
for (int i = 0; i < 10000; ++i)
ifstream f;
f.open("c://temp//test.txt", ios_base::in | ios_base::binary | ios_base::ate);
if (f.good())
int size = f.tellg();
char* p = (char*)malloc(size*sizeof(char) + 1);
f.seekg(ios_base::beg);
if (p != null)
f.read(p, size);
p[size] = '/0';
free(p);
f.close();
j++;
newtickcount = gettickcount();
cout << "reoeated times " << j << endl;
cout << "time costed" << newtickcount - tickcount << endl;
結果顯示兩者效率相當。可見c++的效率還是很高的。
關於效率的思考
今天在整理資料結構 樹的筆記時,產生了對效率的思考.敲了不到五分鐘,便感覺到效率的低下.想了想決定採用 截圖 黏貼的方式做了筆記,只花了1個小時不到的時間.你整理筆記的任務完成了嗎?你是偷懶嗎?不,我覺得不是.因為這些瑣碎的知識點是需要理解,或者記憶的.在任務量很大的情況下你手敲一遍除了手指發酸眼睛...
關於Exosip的效率問題
最近一段時間利用boost多執行緒和ace多執行緒,對exosip的效能進行了比較深入一些的測試。現將測試方法分享一下,在此拋磚引玉,希望大家也可以提供一些建議。首先,原始的exosip只有2個執行緒,乙個做的事情很簡單,是等待事件,另外乙個執行緒非常忙,要做事務狀態的轉換,要收訊息,要解析訊息,要...
關於 迴圈 效率的問題
今天寫到迴圈邏輯,糾結於是用更少的迴圈呼叫函式還是用更少的函式,多迴圈兩次。於是做了個實驗,發現基於c的lua,函式呼叫的代價果然很高。local tb local max 10000000 for i 1,max do tb i i endfunction check i,max if tb i ...