程序每20ms接收200B数据,请问多久保存一次、用何种方式保存(到硬盘),效率最高?我考虑在主线程每10分钟激活子线程,而子线程负责写文件,写完就挂起?请问此法是否可行?

解决方案 »

  1.   

    To 4 楼我测试过写操作的时间  几乎要100ms啊 unsigned char saveBuffer[200]; CString creFileName="F:\\"; creFileName=creFileName+"--SpO2.dat";
    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; 
    请问你是如何写的?
      

  2.   

    startTimeSec=timeGetTime(); file.Open((LPCTSTR)creFileName, CFile::modeWrite);// 
    file.SeekToEnd(); 
    file.Write((void*)saveBuffer,200); 
    file.Flush(); 
    file.Close(); long writeTimeSec=timeGetTime()-startTimeSec; 每次讀寫都要打開關閉文件當然慢了,你可以把long writeTimeSec=timeGetTime()-startTimeSec; 這句分別加到每一句的后面看看主要時間都耗在哪一句上了
      

  3.   

    同意楼上,我改了一下进行测试:
    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