程序每20ms接收200B数据,请问多久保存一次、用何种方式保存(到硬盘),效率最高?我考虑在主线程每10分钟激活子线程,而子线程负责写文件,写完就挂起?请问此法是否可行?
解决方案 »
- Error while updating file(s) xxxxx for class xx
- IOCP - 微软的例子 - 解压失败
- Picture Control上显示CImage对象 无法刷新。。。。。求救!
- 帮忙看看VBA的源代码为什么编译不过去
- 如何将一个颜色加亮10%(or n%)
- 一个关于修改硬盘盘符的的简单问题,求助!
- 如何监视 Windows 下的共享目录?
- 能不能不让窗口移动??
- vc写的dll能在vb中使用吗?如何使用
- 请教onDraw和onPaint函数的区别
- 动态创建的CListBox对象如何响应ON_LBN_SELCHANGE消息?
- 鼠标点击任务栏,如何判断点击的图标是桌面快捷方式
CFile file; file.Open((LPCTSTR)creFileName, CFile::modeCreate);//
file.Close();
startTimeSec=timeGetTime(); file.Open((LPCTSTR)creFileName, CFile::modeWrite);//
file.SeekToEnd();
file.Write((void*)saveBuffer,200);
file.Flush();
file.Close(); long writeTimeSec=timeGetTime()-startTimeSec;
请问你是如何写的?
file.SeekToEnd();
file.Write((void*)saveBuffer,200);
file.Flush();
file.Close(); long writeTimeSec=timeGetTime()-startTimeSec; 每次讀寫都要打開關閉文件當然慢了,你可以把long writeTimeSec=timeGetTime()-startTimeSec; 這句分別加到每一句的后面看看主要時間都耗在哪一句上了
file.Open((LPCTSTR)creFileName, CFile::modeWrite);//
file.SeekToEnd();
long startTimeSec=GetTickCount();
for(int i=0;i<10000;i++)
{
file.Write((void*)saveBuffer,200);
}
long writeTimeSec=GetTickCount()-startTimeSec;
file.Flush();
file.Close();
SetDlgItemInt(IDC_STATIC1,writeTimeSec);
实际结果是平均每次写<0.1ms
注:我的硬盘是5400rpm,共享内存512M,CPU P1.6G