写的一个测试网卡的程序,cpu占用率很高。在赛扬[email protected]上,占用率达到100%;另一台P4 3.0@512M 上,大概占到50%。关键代码应该是中间一个循环,不停的调整发包率并控制分析仪器接收数据。从cpu时间看两台机子大概都要用30s,但测试时间快的只要50s,慢的要2分多钟。请问各位有什么方法可以降低cpu占用率的。谢谢了!
解决方案 »
- CSpinButtonCtrl //自绘的例子几乎没找到。是什么原因?
- 如何在子窗口调用主窗口的listbox
- VC程序:释放一个资源文件然后运行.帮忙看下这段代码哪里出了问题?
- 东大的校友近来领分~~
- 一个程序同时开500个线程,是否太多了,会导致死掉?
- 如何通过WALK获取MIB信息?
- 请问高手,我现在知道MM_HIMETRIC表示的一个width和height,如何转换成MM_TEXT的width和height?
- 如何定义Ctrl+QA型快捷键?如何转移输入焦点?
- Z order 是什么含义阿
- inline函数的问题
- vsto wordaddin 无法正常加载 LOADBEHAVIOR总是为2,开发机器可以运行而客户端机器却有问题?
- CListBox存储容量? 存储的是文本
调节线程等级控制CUP占用率.
while的时候
{
Sleep(3000);
}
这样CPU使用率应该很低了,不过要什么时候才能完成检测呢?
在WINDOWS下。有几种方法。
1.在第一次循环中加入一个Sleep代码。不要太长。10毫秒就可以了。让其他程序有机会执行。
2.降低自己的优先级。此是虽然还是高CPU占用。但其他程序可以顺利运行。程序要做事,就得消耗CPU。要降低CPU消耗,最根本的方法就是减少程序处理事务的时间。
像网络IO的,完全可以使用多线程+异步IO来实现。这样CPU占用就能减少很多。如果不是异步IO。则等待网络操作完成也在占用CPU。无疑是一种浪费。