"..moderne CPUs sind billig und werden sich bei 100% CPU schnell verschlechtern".
Sie müssen sich überhaupt nicht um "CPU-Degradation" kümmern. Moderne CPUs sind nicht minderwertig als früher.
Es ist sehr teuer (und wird alle paar Jahre teurer), CPUs herzustellen, einige Milliarden für den Bau einer neuen Fabrik sind keine Seltenheit (siehe Link).
http://en.wikipedia.org/wiki/Semiconductor_fabrication_plant
Die Produktionskosten einer CPU hängen höchstens von der Nr. Ab. der produzierten Einheiten. Dies ist eine bekannte Tatsache in der Wirtschaft. Das ist der Grund, warum sie (relativ) "billig" verkauft werden können. (Ich denke, hier ist kein Link notwendig)
Ich kann eine Reihe von Gründen nennen, warum ich moderne CPUs als tendenziell hochwertiger als früher ansah.
Aber nur das Wichtigste: Vorteile beim Testen. Moderne Elektronik ist "für den Test ausgelegt". Ob Software oder Hardware, die umfassende Einsicht, Tests über fast alles andere zu bewerten, ist noch nicht so alt. Bei CPUs werden sogar Tests zur Bildung der verschiedenen Preis- und Frequenztypen durchgeführt, z. B. werden die besten CPUs mit den höchsten Frequenzen verkauft. Trotzdem sind die billigeren Prozessoren sehr oft in der Lage, mit höherer Frequenz als verkauft zu arbeiten - sie sind nur aus dem Grund verkrüppelt, dass der Hersteller einige "High-Level" -Prozessoren mit höheren Preisen verkaufen möchte.
(Andererseits sind natürlich für einen Prozessor mit mehr als 1,5 Milliarden Transistoren heutzutage mehr Fehler möglich als für einige tausend Transistoren eines Prozessors der siebziger Jahre. Dies widerspricht jedoch nicht meiner Antwort IMO. Prozessoren im Allgemeinen neigen dazu, viele bekannte Fehler zu haben , zumindest im Mikrocode, aber das ist hier nicht Thema.)
Es gibt noch weitere Gründe, sich keine Gedanken über die CPU-Degration Ihres Programms zu machen:
Der erste Grund ist, dass moderne CPUs ihre Frequenz oder Drossel verringern, wenn sie zu heiß werden.
Es sollte klar sein, dass wenn Sie die CPU 100% 24/7 das ganze Jahr über nutzen, sie normalerweise früher stirbt als eine CPU, die nur jede zweite Woche eine Stunde verwendet wird. Das gilt übrigens auch für Autos. Nur in solchen Fällen würde ich selbst über die CPU-Auslastung und das Schlafpotential nachdenken.
Der zweite Grund ist, dass es wirklich sehr schwierig ist, ein Programm zu schreiben, das 100% der CPU vom Betriebssystem aus nutzt (z. B. unter Windows). Außerdem haben moderne CPUs (normalerweise) mindestens 2-4 Kerne. Ein traditioneller Algorithmus, der normalerweise 100% einer Single-Core-CPU verwendet, hat jetzt nur 50% auf einer Dual-Core-CPU (vereinfacht, aber in realen Szenarien gesehen).
Darüber hinaus hat das Betriebssystem die Kontrolle über die CPU und nicht über Ihr Programm. Wenn es also andere Anwendungen mit gleicher oder höherer Priorität gibt (was die Standardeinstellung ist), erhält Ihr Programm nur so viel CPU wie möglich, die anderen Anwendungen jedoch nicht verhungern. (Natürlich ist dies nur die vereinfachte Theorie, und natürlich ist das Multitasking von Windows, Linux und anderen nicht perfekt, aber insgesamt würde ich das für wahr halten).
"Früher hatte ich den Eindruck, dass eine 100% ige CPU-Auslastung für einen intensiven oder langen Betrieb vorzuziehen war."
Ja, bleib dabei. Wenn Sie beispielsweise auf einen anderen Prozess warten und eine Schleife ausführen, also nichts tun, wäre es nicht allzu schlimm, wenn Sie Thread.Sleep () einige Millisekunden in dieser Schleife ausführen und anderen zusätzliche Zeit geben. Während es für ein gutes Multitasking-Betriebssystem nicht notwendig ist, habe ich einige Probleme damit gelöst, z. B. für Windows 2000. (Das bedeutet natürlich NICHT, Sleep () in Berechnungen zu verwenden.)