作者Anonymoux (猜猜偶素隨 ? ^*^)
看板C_and_CPP
標題[問題] MFC fopen fprintf fclose
時間Fri Nov 19 00:09:18 2010
遇到的問題: (題意請描述清楚)
我有一段程式碼大概如下 (在某條thread中被執行)
int timeStamp = GetTickCount();
while(100000)
{
timeStamp = GetTickCount() - timeStamp;
fopen(some file);
fprintf(timeStamp + some data);
fclose(opened file);
}
希望得到的正確結果:
程式跑出來的錯誤結果:
TIMESTAMP 的值 幾乎都是零 有幾次會有1X左右的數值
fprintf的過程中 有可能會出現 str!=null的錯誤
想請問的是
1. gettickcount 是否有使用上的限制 (搞不太懂為什麼有時候會有數值有時候卻是零)
2. 如何避免 fprintf出現debug error的問題
3. 如果 問題一沒有辦法解答的話 是否有辦法計算 做一次的迴圈 的時間 (因上述gettickcount無效)
4. 好像有很多種寫檔方式 fopen, fstream, createfile, ....有沒有直接的效能分析?
因為處理檔案的過程很單純 希望能找一個比較有效率的方法
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
MFC VC++2005
有問題的code: (請善用置底文標色功能)
補充說明:
不曉得有沒有 明確定義硬碟寫檔限制的資料 或是參考
例如幾KB的檔案 和 幾MB的檔案 一次存會比較快
我知道小檔跟大檔 在硬碟存取上有差異 不過不曉得要怎麼GOOGLEE 才能找到比較的資料
所以請教一下各位
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.2.62
→ stupid0319:timeStamp = GetTickCount() - timeStamp;怪怪的 11/19 01:07
→ stupid0319:int startTimeStamp = GetTickCount(); 11/19 01:15
→ stupid0319:timeStamp = GetTickCount() - StartTimeStamp; 11/19 01:15
→ stupid0319:createfile一定是最快的fopen跟fstream都靠createfile 11/19 01:27