写的一个测试网卡的程序,cpu占用率很高。在赛扬[email protected]上,占用率达到100%;另一台P4 3.0@512M 上,大概占到50%。关键代码应该是中间一个循环,不停的调整发包率并控制分析仪器接收数据。从cpu时间看两台机子大概都要用30s,但测试时间快的只要50s,慢的要2分多钟。请问各位有什么方法可以降低cpu占用率的。谢谢了!

解决方案 »

  1.   

    为何要降低CPU使用率?既然是一个测试工具,应该尽快完成任务,CPU占用越高越好,只要不是浪费资源空跑即可。
      

  2.   

    测试期间就不要同时做其它操作了。如果还想让用户进行操作,可以在循环中适当Sleep。
      

  3.   

    用线程,然后拔高线程等级.
    调节线程等级控制CUP占用率.
      

  4.   

    想降低CPU使用率?
    while的时候
    {
    Sleep(3000);
    }
    这样CPU使用率应该很低了,不过要什么时候才能完成检测呢?
      

  5.   

    进行这么多操作无疑要消息很多系统资源。特别是CPU资源。
    在WINDOWS下。有几种方法。
    1.在第一次循环中加入一个Sleep代码。不要太长。10毫秒就可以了。让其他程序有机会执行。
    2.降低自己的优先级。此是虽然还是高CPU占用。但其他程序可以顺利运行。程序要做事,就得消耗CPU。要降低CPU消耗,最根本的方法就是减少程序处理事务的时间。
    像网络IO的,完全可以使用多线程+异步IO来实现。这样CPU占用就能减少很多。如果不是异步IO。则等待网络操作完成也在占用CPU。无疑是一种浪费。
      

  6.   

    每进行一段测试就用peekmessage等让出cpu时间。
      

  7.   

    在循环中加个sleep(1) 就行了
      

  8.   

    如果这样总体时间太长,就适当的进行多次sleep(0)