“ ..现代CPU很便宜,并且在100%CPU下会迅速降级”。
您完全不必担心“ CPU降级”。现代CPU的质量并不比以前低。
这是非常昂贵的(并且越来越每隔几年更贵),使CPU的,一些数十亿美元建立一个新的晶圆厂也并不少见(见链接)。
http://en.wikipedia.org/wiki/Semiconductor_fabrication_plant
CPU的生产成本最多取决于否。生产的单位。这是经济上众所周知的事实。毕竟,这就是它们可以相对便宜地出售的原因。(我认为,这里不需要链接)
我可以列举许多原因,说明为什么我认为现代CPU的质量要比“以前的时代”更高。
但只有最重要的一点:测试方面的优势。现代电子产品是“为测试而设计”的。无论是软件还是硬件,对几乎所有其他事物进行测试评估的广泛见解都不是那么古老。对于CPU,甚至进行测试以形成不同的价格和频率类型,例如,最好的CPU以最高的频率出售。尽管如此,较便宜的处理器通常能够以比售出的频率更高的频率运行-它们之所以受到损害,仅是因为制造商想以更高的价格出售某些“高级”处理器。
(另一方面,与七十年代处理器的几千个晶体管相比,如今正常使用超过15亿个晶体管的处理器当然有更多的错误。但这与我对IMO的回答并不矛盾。往往有许多已知的错误,至少在微代码中如此,但这不在此限。)
还有更多原因不用担心程序的CPU降级:
第一个原因是,现代CPU如果温度过高,则会降低其频率或节流阀。
应当清楚的是,如果您全年使用100%24/7的CPU,通常它会比每隔一周(每隔一小时)使用一次的CPU更早失效。但是顺便说一句,对于汽车也是如此。只有在这种情况下,我才会考虑CPU利用率和潜在的睡眠问题。
第二个原因是编写一个使用OS中100%CPU的程序确实非常困难(例如,在Windows中)。此外,现代CPU(通常)至少具有2-4个内核。因此,传统算法倾向于使用100%的单核CPU,而现在在双核CPU上只有50%(简化但在实际场景中可以看到)。
此外,操作系统可以控制CPU,而不能控制您的程序,因此,如果有其他具有相同或更高优先级的应用程序(默认设置),则您的程序只会获得尽可能多的CPU,而其他应用程序则不会饿死。(当然,这只是简化的理论,Windows,Linux和其他操作系统的多任务处理也不是完美的,但是总的来说,我认为这是正确的)。
“我以前给人的印象是,对于密集型或长时间运行,CPU使用率最好为100%。”
是的,留下来。但是例如,如果您等待并循环执行另一个进程,换句话说什么也不做,那么如果在该循环中将Thread.Sleep()毫秒化,从而为其他进程留出了额外的时间,那就还不错。尽管对于一个好的多任务操作系统来说并不必要,但是我已经解决了一些问题,例如Windows2000。(例如,这并不意味着在计算中使用Sleep()。