In che modo Common Language Runtime migliora le prestazioni? [duplicare]

-1

Ho letto sul articolo di Wikipedia per Common Language Runtime che uno dei vantaggi offerti dal runtime è "Miglioramenti delle prestazioni ".

L'esecuzione del codice gestito (o bytecode) deve sempre essere più lento a causa di un overhead aggiuntivo per la compilazione JIT rispetto all'esecuzione di codice nativo. Come è possibile che il CLR causi "miglioramenti delle prestazioni"?

Aggiornamento:

Ho esaminato la domanda e le risposte a Cosa conferma l'affermazione che C ++ può essere più veloce di una JVM o CLR con JIT? , ma non è stato eloquente in quanto quella domanda è in realtà chiedendo perché il C ++ sarebbe più veloce piuttosto che più lento. Quello che mi interessa è come sia possibile, dal punto di vista architettonico, che il codice gestito possa portare a miglioramenti delle prestazioni

    
posta neelsg 10.09.2014 - 09:40
fonte

2 risposte

6

Un'implementazione CLR non necessariamente interpreta nulla. Infatti, il CLR desktop di Microsoft non ha nemmeno ha un interprete, è sempre JIT compila tutto . Quindi, mentre il bytecode CIL viene letto dal disco e conservato in memoria, viene compilato su un codice macchina corretto e completo che viene poi eseguito. Quindi solo i rallentamenti che possono essere attribuiti al modello di esecuzione (al contrario del modello di oggetto, gestione della memoria, servizi CLR, librerie, ecc.) Sono:

  • Maggiore latenza di avvio, ovvero il periodo compreso tra l'avvio di un'applicazione e la sua funzionalità. Questo passaggio può anche essere saltato tramite NGen.
  • Ottimizzazioni del compilatore mancate causate dal desiderio di mantenere ragionevole la latenza di cui sopra
risposta data 10.09.2014 - 09:54
fonte
0

Migliora le prestazioni rispetto a che esattamente ?

  • Rispetto alla maggior parte degli eseguibili compilati, un compilatore JIT ha il vantaggio di sapere esattamente in quale ambiente è in esecuzione. Può utilizzare le ultime estensioni dell'insieme di istruzioni e applicare ottimizzazioni che funzionano solo su quella specifica CPU.
  • Rispetto al codice che gestisce la gestione manuale della memoria che non è ottimizzato con molta attenzione, un moderno garbage collector generazionale è molto efficiente, specialmente se hai molti oggetti di durata molto breve. L'allocazione è fondamentalmente gratuita.
risposta data 11.09.2014 - 12:28
fonte

Leggi altre domande sui tag