"..modern CPUs are cheap and will degrade quickly at 100% CPU".
Non devi preoccuparti del "degrado della CPU". Le CPU moderne non sono di qualità inferiore rispetto ai precedenti.
È molto costoso (e sta diventando sempre più costoso ogni due anni) per fare CPU, alcuni miliardi per costruire un nuovo fab non sono infrequenti (vedi link).
link
I costi di produzione di una CPU dipendono al massimo dal n. di unità prodotte. Questo è un fatto ben noto nell'economia. Questo è il motivo per cui possono essere venduti (relativamente) "a buon mercato", dopotutto.
(Penso, nessun collegamento necessario qui)
Posso elencare una serie di motivi per cui considererei le CPU moderne tendenzialmente di qualità superiore rispetto a "tempi passati".
Ma solo il più importante: i vantaggi del test. L'elettronica moderna è "progettata per il test". Se il software o l'hardware, l'intuizione generale di valutare i test su quasi tutto il resto, non è così vecchio.
Per le CPU, i test vengono anche presi per formare i diversi tipi di prezzo e frequenza, ad es. le migliori CPU sono vendute con le frequenze più alte. Nonostante ciò, i processori meno costosi sono molto spesso in grado di operare con frequenze più elevate rispetto a quelli venduti - sono danneggiati solo per il motivo che il produttore vuole vendere alcuni processori "di alto livello" con prezzi più alti.
(D'altra parte, naturalmente ci sono più errori possibili per un processore con oltre 1,5 miliardi di transistor come al giorno d'oggi che con qualche migliaio di transistor di un processore degli anni settanta, ma questo non contraddice la mia risposta IMO. I processori in generale tendono ad avere molti errori noti, almeno nel microcodice, ma questo non è soggetto qui.)
Esistono anche più motivi per non preoccuparti della degredazione della CPU per il tuo programma:
-
La prima ragione è che le moderne CPU riducono la frequenza o l'accelerazione, se diventano troppo calde.
Dovrebbe essere chiaro che se si utilizza la CPU al 100% 24/7 per l'intero anno normalmente morirà prima di una CPU utilizzata solo ogni seconda settimana un'ora. Ma questo vale anche per le automobili, a proposito. Solo in questi casi penserei all'utilizzo della CPU e al potenziale sonno da solo.
-
Il secondo motivo è che è davvero molto difficile scrivere un programma che utilizza il 100% della CPU dal sistema operativo (ad esempio, in Windows). Inoltre, le CPU moderne (normalmente) hanno almeno 2-4 core. Quindi un algoritmo tradizionale che tende a utilizzare il 100% di una CPU single core, ora ha solo il 50% in una CPU dual core (semplificato ma visto in scenari reali).
-
Inoltre il sistema operativo ha il controllo sulla CPU e non sul tuo programma, quindi se ci sono altre applicazioni con priorità uguale o superiore (quale è l'impostazione predefinita), il tuo programma ottiene solo più CPU possibile, ma le altre applicazioni non moriranno di fame. (Naturalmente questa è solo la teoria semplificata, e ovviamente il multitasking di Windows, Linux e altri non è perfetto, ma nel complesso lo considererei vero).
"I was previously under the impression that 100% CPU usage was
preferable for an intensive or long operation.."
Sì, rimani con questo. Ad esempio, se si esegue un looping in attesa di un altro processo, in altre parole non si fa nulla, non sarebbe troppo male se Thread.Sleep () alcuni millisecondi in quel ciclo, dando ulteriore tempo agli altri.
Considerando che non è necessario per un buon sistema operativo multitasking, ho risolto alcuni problemi con questo, ad es. per Windows 2000. (Questo NON significa ovviamente usare Sleep () nei calcoli, per esempio ..