關於c IO的效率

2021-05-06 15:37:08 字數 1421 閱讀 7368

自己寫了一段測試程式,比較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 ...