2015-07-21 7 views
11

La lettura da Announcing .NET Framework 4.6 sembra implicare che RyuJIT è solo per .NET 4.6.Devo indirizzare la mia applicazione a .NET 4.6 per sfruttare RyuJIT?

Ciò significa che sarà necessario reindirizzare le mie applicazioni a .NET 4.6 affinché RyuJIT abbia effetto?

+2

Una volta installato .NET 4.6 su un sistema, tutte le app .NET 4.0+ a 64 bit ricevono RyuJITted a meno che tu [disabiliti RyuJIT a livello di app o di sistema] (https://github.com/Microsoft/dotnet/blob/master/ docs/testing-with-ryujit.md # disable-ryujit). – NextInLine

risposta

15

Risposta breve: no.

Risposta lunga: utilizzare il debugger per assicurarsi di disporre della nuova versione. Per prima cosa dare un'occhiata alla directory di runtime con Explorer, accedere a C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319. Troverai i due nervoschi lì, clrjit.dll è un nuovo jitter basato sul progetto Ryujit e compatjit.dll è il jitter legacy x64.

Progetto> Proprietà> Debug> selezionare "Abilita opzione di debug del codice nativo". Utilizza la scheda Crea e assicurati di aver rimosso la forzatura del jitter, l'opzione "Prefer 32-bit" non deve essere selezionata, "Target della piattaforma" deve essere impostato su AnyCPU. E utilizzare la scheda Applicazione per selezionare l'obiettivo quadro.

Utilizzare Debug> Step Into per avviare il debug. Debug> Windows> Moduli visualizza l'elenco dei moduli caricati. Trova le DLL di jitter in quell'elenco, fai clic sull'intestazione di colonna "Nome" per ordinare per nome. Se vedi compatjit.dll allora stai usando il jitter legacy. Si noti che vedrete sempre clrjit.dll, entrambi vengono caricati quando viene utilizzato il jitter legacy.

Utilizzando il jitter eredità x64 richiede intenzionalmente sia la variabile d'ambiente COMPLUS_useLegacyJit o un valore useLegacyJit nella chiave di registro HKLM o HKCU \ Software \ Microsoft \ .NETFramework o un voce del file App.exe.config:

<runtime> 
    <useLegacyJit enabled="1"/> 
</runtime> 
Problemi correlati