建立了一个win32 console application工程,通过控制卡提供的链接库函数读取控制卡的IO数据,测得读一组IO数据约120ms。当将程序移植到MFC工程中,建立了程序界面,测读取一组IO数据却需要500ms,求解答这是什么原因?有没有什么办法解决?

解决方案 »

  1.   

    用QueryPerformanceCounter()函数获取程序段开始和结束的时间,求差得到的。我也很疑惑时间差这么多
      

  2.   

    用QueryPerformanceCounter()函数获取程序段开始和结束的时间,求差得到的。我也很疑惑时间差这么多
      

  3.   

    【补充】在MFC中程序是多线程的,读IO的操作是一个单独的线程,读IO中用到了Sleep函数,是不是和线程切换有关?
      

  4.   

    为啥要Sleep呢?
    你console程序里怎么做的呢?直接移植过来修改一下应该就可以使用了吧
      

  5.   

    我就是直接移植过来的,因为IO刷新速度不是很快,所以用了sleep延时,延时部分在console里也有。我试过去掉sleep函数,时间还是500ms
      

  6.   

    界面更新是一个线程,读IO是一个线程,两者肯定有影响,我也想过这个问题,但怎么让程序执行完读IO再切换到界面刷新?
      

  7.   

    按理说应该差不多才对,看看CPU占用率如何;
    另外:QueryPerformanceCounter()效率太低,尤其单核CPU的话更是如此,建议用CPU时间戳。
      

  8.   

    你不会是把读IO的线程放在和界面一个线程里吧?
    创建单独的线程负责io数据读取试试
      

  9.   

    由于是循环读取IO,当其中一个跳变后才读取下一个,CPU占用很高,但加入sleep函数后,CPU占用就大大降低了。请问CPU时间戳怎么用?