c# - priorità - modificare processore pc



.NET CLR si ottimizza davvero per il processore corrente (5)

.Net Framework Runtime Optimization Service ottimizza non solo i problemi di programmazione (ottimizzazione del compilatore) ma anche i processori.

https://src-bin.com

Quando leggo le prestazioni dei linguaggi JITted come C # o Java, gli autori di solito dicono che dovrebbero / potrebbero teoricamente superare le molte applicazioni native-compilate. La teoria è che le applicazioni native sono di solito compilate per una famiglia di processori (come x86), quindi il compilatore non può fare certe ottimizzazioni in quanto potrebbero non essere ottimizzazioni su tutti i processori. D'altra parte, il CLR può rendere ottimizzazioni specifiche del processore durante il processo JIT.

Qualcuno sa se il CLR di Microsoft (o Mono) esegue effettivamente ottimizzazioni specifiche del processore durante il processo JIT? In tal caso, che tipo di ottimizzazioni?


Answer #1

Dal 2005, David Notario ha elencato diverse ottimizzazioni mirate specifiche è il suo blog " Il JIT sfrutta la mia CPU? ". Non riesco a trovare nulla sul nuovo CLR 4, ma immagino che siano inclusi diversi nuovi articoli.


Answer #2

Penso che alcuni compilatori Java lo facciano, Microsoft .NET no, e batte solo precompilati quando si confrontano le mele con le arance. Precompilati possono essere spediti con varianti di libreria sintonizzate su CPU diverse (o più probabilmente con set di istruzioni differenti) e il controllo di runtime per scegliere quale libreria caricare è molto più economica di JIT. Ad esempio, mplayer fa questo (google per mplayer enable-runtime-cpudetection).


Answer #3

So che le regole per decidere se attivare o meno le funzioni in linea cambiano a seconda del tipo di processore (x86, x64). E naturalmente le dimensioni del puntatore variano a seconda che venga eseguito a 32 o 64 bit.


Answer #4

Mono.Simd specifica per un processore che sono a conoscenza di ciò che è stato fatto in Mono è la compilazione Mono.Simd chiamate Mono.Simd alle istruzioni SSE sui processori che supportano SSE. Se il processore che esegue il codice non supporta SSE, il compilatore JIT genererà il codice equivalente non SSE.





jit