Come massimizzare la potenza usata da mia applicazione in C #?
Domanda
Come ho creato l'applicazione che è difficile a calcoli -> un sacco di lavoro da fare, non calcoli molto complessi -> ci vuole troppo tempo per lavorare fuori e il processo è solo al 45% della CPU. Posso in qualche modo massimizzare ?: andare al 90%?
Soluzione
Se si dispone di una macchina dual core (che sto cercando di indovinare che fai), il massimo che poteva sperare di ottenere in un singolo thread sarebbe del 50% l'utilizzo della CPU.
Per ottenere l'utilizzo della CPU del 90%, è molto probabile che sia necessario infilare i vostri calcoli. Questo può essere molto semplice o molto difficile, a seconda della natura dell'algoritmo che si desidera infilare.
Se si riesce a spezzare la vostra working set in più gruppi, mi sento di raccomandare pensa di utilizzare il ThreadPool , o potenzialmente anche il Task Parallel Biblioteca , a seconda la vostra sincronizzazione per il rilascio.
Altri suggerimenti
Molto probabilmente si dispone di una CPU dual core, e se la vostra applicazione è a thread singolo, la CPU massima userà è del 50% (tutti di un core). Al fine di ottenere un migliore utilizzo, è necessario utilizzare più thread, ma questo significa anche capire un modo per rompere i vostri calcoli in pezzi in modo che possano essere lavorato per più di un core.
Controlla questo:
- Avete letto dal disco durante il calcolo? Se è così, provate a leggere i dati in memoria prima di calcoli.
- Si scrive i risultati su disco o su console, mentre il calcolo? In tal caso, provare a rinviare la scrittura fino a quando il calcolo è finita e quindi non la scrittura.
- Se si dispone di processore multicore, provare a creare un algoritmo multithread, se possibile.
Se v'è solo un semplice anello di fare i calcoli, quindi molto probabilmente il computer dispone di due core / processori. Una singola applicazione filettato caso migliore utilizzare il 50% della CPU.
È necessario più thread di utilizzare l'intera CPU su una macchina multi-core.