什么API会让System占用CPU升高?

dfasri 2011-10-04 03:14:11
近来写的程序, 有点非常难明白的地方.
前一天晚上写的SOCKET相关代码, 运行结果有7000次/S的速度, 查看任务管理器, 除了这个程序以外, 其他程序CPU占用率为0. CPU总数只有40%左右.
然后到了早上, 把一个有13个分支的if语句改成switch语句, 然后删除一些注释了的代码, 编译, 运行, 结果连3800次/S的速度都不到, system这个系统进程占用率还15%左右上下移动. CPU总占用居然高达80%, 这个到底是什么原因?

有没有谁知道什么API会让system这个几十K的系统进程占用CPU呢?

SOCKET用的是UDP, 就是阻塞的最简单的应用模式
内存分配用的上HeadAlloc之类的
用了Event类的, 也用了Interlock类的API, 没用其他API了
...全文
197 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfasri 2011-11-03
  • 打赏
  • 举报
回复
可能这个问题还没有回答上
其实, 只要高速调用 sendto recvfrom 就会导致system进程占用高CPU...
大道曙光 2011-10-04
  • 打赏
  • 举报
回复
另外 少量分支
if else速度比较快
分值很多 用switch效率就比较高了
大道曙光 2011-10-04
  • 打赏
  • 举报
回复
这个问题也遇到过
不过我是在写一个小游戏时 处理消息时用了PeekMessage, CPU占用50%
而用GetMessage CPU占用很少
dfasri 2011-10-04
  • 打赏
  • 举报
回复
我找到错误的地方了...更改switch语句的时候, 把两个变量初始化去掉了, 放到了每个分支需要时才进行初始化, 结果有一段代码忘记了初始化, 导致效果下降了N倍...还浪费了一整天的时间去查..., 还是自己的问题...
谢谢各位的协助
dfasri 2011-10-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 masterz 的回复:]

楼主可以用Intel Parallel Studio看看,它有1个月的试用期。通过performance profile功能可以很容易看出来哪一段代码在占用CPU.
[/Quote]

非常感谢!
masterz 2011-10-04
  • 打赏
  • 举报
回复
楼主可以用Intel Parallel Studio看看,它有1个月的试用期。通过performance profile功能可以很容易看出来哪一段代码在占用CPU.
dfasri 2011-10-04
  • 打赏
  • 举报
回复
即使把switch块的代码还原回去, 还是依旧变成这么慢...
所以才想问, 到底调用了什么API, 才会导致system这个进程占用CPU资源的?
是不是节能程序, 还是防火墙之类的导致这种情况发生?
dfasri 2011-10-04
  • 打赏
  • 举报
回复
可能描述得不够吧.

运行过程是这样的, 死循环, 客户端拼命的向服务端发数据, 每份数据是8K, 然后单机测试, 前一晚上还是7000次/S左右的速度的, 而且system这个进程, CPU占用是0%的.

然后到了早上, 上网查了查if和switch到底哪个快, 然后把一个13分支的if语句换成switch, 去掉一些不会再使用的已经注释了的代码, 运行起来...结果system这个进程突然CPU占用15%以上, 然后客户端也由昨晚的20%提升到了30%, 服务器也由昨是的22%提升到35%左右...结果整个CPU占用率高达80%, 并且次数也由7000/次降到了3000次.

我用的到的系统API就是上述的那些, SOCKET的, Interlock, Event, Heap 这几种, 没其他了..
柯本 2011-10-04
  • 打赏
  • 举报
回复
一般,内部遁环会提高CPU占有率,不过就楼主描述,看不出什么
足球中国 2011-10-04
  • 打赏
  • 举报
回复
cpu是运算。运算的增加都会增加CPU。
向立天 2011-10-04
  • 打赏
  • 举报
回复
看你这么描述很难分析
oLINo 2011-10-04
  • 打赏
  • 举报
回复
7000次/秒的速度,什么意思,每秒显示7000次结果?

18,355

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧