Ho notato che il mio software degrada gravemente quando il numero di thread è sostanzialmente aumentato .
Ciò che intendo è che quando limite il numero di thread, le prestazioni sono molto migliori rispetto a quando le faccio girare tutte simultaneamente.
La mia cpu è un i7-3940XM, quindi molto veloce per un cellulare e non è ancora troppo trasandato rispetto ai desktop i7 per un vecchio processore. È a 4 core ma ha 8 core logici. Windows 10.
Il test case crea 65 thread e ci vogliono quasi 5 minuti per funzionare. La CPU è al massimo quando ciò accade perché il codice è per lo più tutto in memoria e le uniche risorse a cui accede con maggiore frequenza è un ram-disk.
Ma quando limito il numero di thread che possono essere eseguiti contemporaneamente, le prestazioni migliorano drasticamente:
Threads significa Thread concomitanti nell'immagine sottostante, ogni volta è per la stessa applicazione che ha eseguito 65 thread totali, solo il # di thread concorrenti varia
Quindisembracheleprestazionisianolemiglioriquandoil#dithreadèvicinoal#deicorelogici
Ilmotivopercuistopostandoèchemichiedosedevoindagareulteriormentesehoqualcosache"blocca" nel mio codice, non capisco davvero perché quando non c'è un limite sul numero di thread simultanei rallenta così drammaticamente.
Qualcuno può offrire qualche pensiero?
Aggiornamento:
Ho trovato un codice di scrittura / lettura di file che avevo dimenticato e spento - quindi con 8 thread simultanei non ha fatto differenza nel tempo per thread ma a 65 è caduto fino a 1,00 secondi media per thread