我弄了个多线程网络爬虫抓邮箱虽然使用了多线程,但CPU占用仍然异常的高,而且 一起找不出来是哪个地方占用了资源有什么办法可以检测出哪个方法挤占了CPU资源吗?检测了一天,没找出问题,求检测办法!!

解决方案 »

  1.   

    虽然使用了多线程,但CPU占用仍然异常的高什么意思。多线程没有降低CPU使用率的功能,你的话好比,虽然我吃了很多饭,但是还是感觉很饱。
      

  2.   

    别咬文嚼字了 还是帮人家解决实际问题比较好。 我知道有个检测.net内存占用检测工具,它可以检测你程序里占用大量资源的代码块,叫.NET Memory Profiler 
      

  3.   

    别咬文嚼字了 还是帮人家解决实际问题比较好。 我知道有个检测.net内存占用检测工具,它可以检测你程序里占用大量资源的代码块,叫.NET Memory Profiler 人家问CPU,你跟人家说内存,果然是“不要咬文嚼字”,解决实际问题!
      

  4.   

    检测了一天没找到问题?你的多线程挨着挨着停,看哪个停了cpu占用不高,
      

  5.   

    你试着在线程里加入一定的sleep,可以有效降低CPU使用率。
      

  6.   

    多线程的使用只是为了同一时间干更多的事情,CPU使用率高,只能说明你线程内的逻辑可能臃肿消耗长时间来使用CPU运算,又或者是你本来就需要耗这么多的运算时间来完成~ 建议你从精简线程内部逻辑方面入手~ 1楼的打比方很有趣,也很对! 哈哈!
      

  7.   

    线程只是在后台跑,不影响主线程UI的响应
    该用多少资源还是得用的。
    建议在线程循环中增加Sleep(),减慢它的运行。
      

  8.   

    看你的循环是什么样的
    如果循环执行率比较高
    这个方法不错
    其实如果你要达到降低Cpu的效果 这个方法不错
    楼主可以使用
    但是同时程序的效率会降低
      

  9.   

    是不是有循环在空转。适当的sleep啊。
      

  10.   

    我以前做了个程序,别的程序向文件里面填东西,我这个程序就用线程一直检测有改动就读取里面的文件,没有SLEEP()就CPU占用很高
      

  11.   

    只听说内存占用大的,没听过cpu占用大的,你确定不是笔误?现在硬件中cpu超前太多了,除非你搞了写死循环在那里浮点运算,不然不可能吧。
      

  12.   

    内存占用高倒是可能,现在都是object在搞
      

  13.   

    vs菜单栏“分析”->启动性能分析,剩下的自己研究下这个工具可以跟踪到每个方法占用的时间,帮你找到最可疑的代码段
      

  14.   

    估计用了httpwebrequest,你可以试试异步方法,beginrequest或者控制同时并发request的线程数量
      

  15.   

    难道楼主将 while(1) 从一个线程中分发到多个线程中并行?