如果是单核CPU。两者耗时估计差不多,
如果是多核CPU。要考虑开启新线程,以及线程切换的开销。如果只是循环0到100000,估计差距不是5倍的关系,估计数据越大,会越接近5倍。

解决方案 »

  1.   

    如果CPU有5个以上核,可能耗时会变短,如果只有1个核,那可能还会更长
      

  2.   

    我说的10秒是假如  比如 for循环前计时开始,结束计时结束  那么我可以不可以 让5个for同时循环 ,比如一个循环0-20000  一个20001-40000 这样
      

  3.   

    话说,如果你循环里什么都不做,那么就完全是在吃CPU,跟IO没有一点关系
    而CPU已经很忙了,不管你分多少个线程,它也还是那么忙,除非你的CPU是双核的,那么你可以建立2个线程
    如果是4核,你可以建立4个线程这就好比:数数
    你有100000张百元大钞需要数
    你只有一个点钞机,那么不管你把这些钱分成多少份,最后还是要用那么多时间才能数完
    如果你有2个点钞机,就可以平均分成两堆来数
    如果你有4个,就可以分成4堆
      

  4.   

    这个跟你是否使用多线程,处理的CPU是否是多核有直接关系,多线程+多核,时间变短,多线程+单核,时间变长,单线程情况下,时间都差不多
      

  5.   

    点钞机就相当于CPU,线程就相当于你分配了几个人来干这个活
    只有1个点钞机,4个人在那忙活,可能反而效率更低
    而如果有4个点钞机,4个人每人霸占一个,效率才会提高
    当然考虑到给4个人分配任务的过程,这个效率提高的可能会不到4倍
      

  6.   

    你已经提出来了多线程的概念,但是实现有问题,哈哈微软的朋友帮你做好了,找找thread吧
      

  7.   

    考虑线程就行了,CPU一般利用率都很低,不用太关心CPU有多少个核心,当然,核心多些肯定还是好些
      

  8.   

    那是因为一般在使用多线程的时候,都涉及IO操作,而不是全在处理内存数据
    如果整个for循环都不过是在吃CPU,或者在进行内存计算,你再看CPU利用率还低不低
      

  9.   

    当然会快,            var m = new Action<int>(i => { });
                var count = 1000000000;            var start = Environment.TickCount;
                for (var i = 0; i < count; i++)
                {
                    m(i);
                }
                Console.Write((Environment.TickCount - start).ToString());            start = Environment.TickCount;
                ParallelEnumerable.Range(1, count).WithDegreeOfParallelism(5).ForAll(m);
                Console.Write((Environment.TickCount - start).ToString());我机器上实验,分5段会快一倍(5000 vs 2500)
      

  10.   

    并行运算与你的CPU数量有关,并且这个数量与效率之间并不是线性关系
      

  11.   

    最开始我还准备说LZ爱思考啊,结果一看原来LZ都出道多年了。无语,原来这就是传说中的真·码农
      

  12.   

    来点实际的,多线程教程
    http://zhoufoxcn.blog.51cto.com/792419/d-3/p-3
    楼主好好学习,把多线程1-4都看完
      

  13.   

    其实,看到这个问题,我想起另一个问题:
    比如我在一个线程里面直行一项比较费时的工作,假设耗时1秒,CPU利用率为10%,那么我有什么办法提高CPU利用率,从而降低工作执行时间。提高进程和线程的优先级是可以的,但貌似也不能使CPU利用率达到很高的程度
    我就觉得奇怪,既然CPU利用率只有10%,为什么系统不将剩余的那么多CPU时间安排给我,从让让我的工作变快。你即使要将CPU留给系统本身,那也得等到你系统本身要用CPU的时候你再拿回去用啊,那也用不着一直让CPU空闲这么多等着系统来用吧
      

  14.   

    有相同疑问 一直都好奇这个问题 因为经常发现内存占用高 cpu永远都是占用那么低 甚至有时让人感觉CPU严重过剩 内存无论多大都不太够用一样的
      

  15.   


    是的,我就不知道假设不牵涉其他外设的情况下,CPU利用率是不是受制于内存的程度这么高,还有没有其他原因导致CPU利用率低
      

  16.   

    如果你的CPU是四核的,那么即使你做个程序,单线程,里面就是while死循环不加Sleep,CPU最高也只能达到25%
    因为最多就只有一个核心在忙碌,其他3个都很闲
      

  17.   

    而如果你所谓的耗时操作,根本不是在消耗CPU,而是线程在等待IO设备的响应
    此时IO设备很忙,但是CPU其实闲的很