2015-05-04 16 views
14

Dopo aver installato Visual Studio 2015 RC1, ho caricato un progetto ASP.NET legacy e modificato la versione .NET in 4.6. Il progetto funziona bene, ma il sito web si carica ancora lentamente come sempre. Mi aspettavo che RyuJIT prendesse il via, ma a quanto pare non lo è.Abilitazione di RyuJIT in Visual Studio 2015 RC

Ho dato un'occhiata a this thread su RyuJIT e non riesco a vedere alcuna traccia di RyuJIT con nessuno dei metodi descritti qui.

Lo stesso problema si verifica anche con un progetto di console vuoto. Non riesco a vedere Ryujit nella finestra di output, nella finestra Modules o come task Windows in esecuzione.

Quindi RyuJIT non può essere rilevato come nelle precedenti anteprime o non è in esecuzione. Ad ogni modo, sono bloccato.

Come posso verificare che RyuJIT sia in esecuzione in VS 2015 e cosa devo fare per farlo funzionare nel caso in cui non lo sia?

+0

Ti rendi conto che RyuJIT è solo a 64 bit? Forse stai correndo come 32-bit? – leppie

+0

@leppie: Sto lavorando su Windows 8.1 x64. Nel progetto della console. La casella di controllo "Prefer 32 bit" è deselezionata, quindi presumo che stia usando 64 bit. Nel progetto ASP.NET, quella casella di controllo è disattivata, non è sicuro di cosa significhi. –

+0

Non c'è alcuna opzione per * non * usarlo in .NET 4.6, è sempre usato per jit codice a 64 bit. * Non * si aspetta un miglioramento della velocità, che non era l'obiettivo del progetto. –

risposta

6

Innanzitutto, vai alle impostazioni del progetto, scheda Debug e assicurati che il debug del codice nativo sia abilitato. Ciò consente di visualizzare eseguibili nativi e gestiti nella finestra Moduli di Visual Studio.

Ora eseguire il programma in modalità Debug o Release e aprire la finestra Modules. Vedrete una delle due cose:

  • O è caricato solo clrjit.dll, il che significa che RyuJIT viene utilizzato per compilare tutto il codice gestito.
  • Oppure sono caricati sia clrjit.dll che compatjit.dll, il che significa che il compilatore JIT64 legacy viene utilizzato per compilare il codice gestito mentre il codice gestito in altri eseguibili potrebbe utilizzare il compilatore.

compatjit.dll viene caricato quando fallback mechanism è abilitato. Altrimenti, non è caricato.

Si noti che se è stato installato .NET 4.6 (noto anche come .NET 2015), RyuJIT verrà utilizzato di default anche se si miravano a versioni precedenti del framework.

Per quanto riguarda RyuJIT vs JIT64. Il codice generato stesso di JIT64 è attualmente più veloce del codice generato da RyuJIT. Quindi non aspettarti un miglioramento delle prestazioni in questo aspetto. D'altra parte, il tempo di compilazione varia. Secondo lo Microsoft, il tempo di compilazione di RyuJIT può essere più veloce di JIT64 fino al 30% e più lento fino al 15%. Quindi non aspettatevi un miglioramento delle prestazioni in questo aspetto.

Le cose potrebbero cambiare un po ', tuttavia, quando .NET 2015 viene rilasciato.

Nota

Se la piattaforma di destinazione è "Qualsiasi CPU", il "Prefer a 32 bit" casella di controllo nella scheda Costruisci deve essere deselezionata. In caso contrario, verrà utilizzato il JIT x86.

+0

Grazie per la tua risposta! :) –

6

Qui si va

Dopo l'installazione, ci sono due modi per accendere RyuJIT. Se si desidera abilitare RyuJIT per un'applicazione, impostare una variabile di ambiente: COMPLUS_AltJit = *. Se si desidera abilitare RyuJIT per l'intera macchina, impostare la chiave di registro HKLM \ SOFTWARE \ Microsoft.NETFramework \ AltJit sulla stringa "*". Entrambi i metodi fanno in modo che il CLR a 64 bit utilizzi RyuJIT anziché JIT64. Ed entrambi sono temporanei impostazioni-installazione RyuJIT non apportare modifiche permanenti alla vostra macchina (a parte l'installazione dei file RyuJIT in una directory, che è.)

Tratto da .NET Framework 4.6 - Testing with RyuJIT

ma dovrebbe essere attivato di default

.NET Framework 4.6 include un nuovo compilatore JIT (Just-In-Time) per processi a 64 bit, denominato RyuJIT. Si è abilitata di default. È ancora una versione di anteprima, quindi potresti scoprire problemi che devono ancora essere risolti.

Tratto da .NET Framework 4.6 - Testing with RyuJIT

Per scopi di test se si encouter alcuna eccezione con RyuJIT, è possibile disattivarlo con un'impostazione nel app.config. Questo usa il vecchio JIT64.

<configuration> 
<runtime> 
    <useLegacyJit enabled="1"> 
</runtime> 
</configuration> 

Tuttavia, RyuJIT CTP5 attualmente non funziona su Visual Studio "14" CTP4. Non ne hai comunque bisogno, dal momento che RyuJIT è abilitato di default su Visual Studio "14" CTP4. :) (La versione di RyuJIT in Visual Studio "14" CTP4 è leggermente più grande di questo CTP, ma non di molto.)

Tratto da RyuJIT CTP5: Getting closer to shipping, and with better SIMD support

ho trovato un Blogpost per determinare il JIT utilizzato durante runtime, ma prende un bug noto nel compiler JIT64 in considerazione. Il codice di esempio è pubblicato here. Non sono sicuro se questo è un modo affidabile per determinarlo.

+0

Grazie per la tua risposta!In tal caso mi chiedo perché RyuJIT non sembra fare nulla in termini di velocità di compilazione. Hai idea del perché questo potrebbe essere il caso? –

+0

@AdrianGrigore: No, non sono sicuro. Quale Target di piattaforma è impostato per il tuo progetto? AnyCPU, x64? – Jehof

+0

Sì. Il progetto è impostato su x64, "Prefer 32 bit" è disabilitato e il progetto è in esecuzione in IIS su Windows 8.1 x64. Inoltre, se imposto il build target su x86, IIS si rifiuta di eseguirlo. –

0

RyuJIT si attiva automaticamente durante la compilazione del codice e questo è solo un compilatore che viene eseguito in modalità 64 bit con accesso alla RAM per aumentare la compilazione il 30% più velocemente e il tempo trascorso nel compilatore JIT è solo un componente del tempo di avvio, quindi l'app non inizia due volte più velocemente solo perché il JIT è due volte più veloce.

è possibile controllare lo stato attuale della memoria ram e il processo in esecuzione con memoria disponibile disponibile se è sufficiente, quindi deve essere eseguito più rapidamente altrimenti è necessario considerare l'allocazione della memoria.

+0

I tempi di compilazione non sono ridotti da quando ho installato VS 2015 RC. Sto lavorando su un computer con 16 GB di RAM, con circa 5 GB di memoria extra disponibile, quindi non penso che la mancanza di RAM sia il problema. –

Problemi correlati