Domanda

Ti stai solo chiedendo se un'app .NET può essere compilata in anticipo in codice macchina nativo? Non ho intenzione di farlo anche se potessi; Sono solo curioso.

Grazie

È stato utile?

Soluzione

Puoi usare NGen per compilarlo in anticipo, ma questo dipende ancora dal framework .NET. Salamander di Remotesoft (un'app commerciale) può creare un'app senza framework.

Altri suggerimenti

È possibile compilare IL in binari nativi. Ci sono prodotti che lo fanno.

La domanda più grande è se tu ...

Se desideri rimuovere tutte le dipendenze dot net per l'esecuzione senza dot net

Fondamentalmente ciò che stanno facendo questi prodotti è precompilare a livello di macchina (di solito x86) e quindi includere staticamente tutte le librerie richieste nel tuo exe. Ciò di solito si traduce in un exe ENORME. E, cosa ancora più importante, ora non hai davvero il tempo di esecuzione sul tuo computer di destinazione. Hai una parte del runtime che il compilatore nativo ha scelto di incorporare.

Se vuoi semplicemente ottenere un tempo JIT più veloce

Puoi anche usare NGen per compilarlo in un binario nativo, ma hai ancora tutte le dipendenze su dot net. Le macchine target hanno ancora bisogno del framework, ecc.

Ma quando perdi la possibilità per l'app di promuovere automaticamente fino a 64 bit. Se la tua app è precompilata devi forzare una modalità. Se un utente è in esecuzione su un computer a 64 bit, il tuo codice IL sarebbe stato promosso (a meno che tu non lo contrassegni per non farlo).

Il tempo JIT non è il più grande collo di bottiglia nella maggior parte delle app. È il caricamento delle librerie del framework e di altri requisiti correlati.

Se ne hai davvero bisogno, puoi accedere a un'app di configurazione per ottenere la macchina di destinazione degli utenti attuali.

Di recente ho anche appreso che non puoi NGEN un'app e mi aspetto che sfrutti la CPU come puoi con JIT. Quando esegui NGEN viene sempre ottimizzato l'output per un PentiumPro per qualche motivo e non trarrà vantaggio da cose come SSE, SSE2, ecc. Quindi direi che rimuove NGEN come un caso di utilizzo ragionevole.

ngen può essere utilizzato per " pre-JIT "un'immagine, quindi è disponibile su disco in formato nativo per ridurre i tempi di avvio dell'applicazione.

Mono ha un Ahead of Time (AOT) compilatore che può emettere codice nativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top