2011-07-13 1 views
5

Accorciare i nomi degli identificatori rende l'eseguibile risultante di dimensioni più piccole poiché il codice MSIL include tutti questi nomi eccetto quelli locali variabili. Influisce sull'esecuzione del codice nel runtime .NET in un buon modo in termini di prestazioni, almeno in teoria? Il codice macchina nativo non include tutti quei nomi ma interagisce con .NET runtime. Quindi mi chiedo se abbia senso offuscare (cioè abbreviare i nomi degli identificatori) il codice MSIL al fine di aumentare almeno del poco le prestazioni di esecuzione dell'applicazione.C#. I nomi degli identificatori abbreviati aumentano le prestazioni di runtime complessive di un'applicazione?

Sono stato sorpreso da questa affermazione: "Dotfuscator migliora le prestazioni in fase di runtime Eliminando gli elementi del programma non necessari e rinominando gli identificatori in nomi piccoli, Dotfuscator può effettivamente accelerare i programmi." http://msdn.microsoft.com/en-us/library/ms227226.aspx

+0

Per quanto riguarda la dichiarazione: "Dotfuscator migliora le prestazioni in fase di runtime Eliminando gli elementi del programma non necessari e rinominando gli identificatori in nomi piccoli, Dotfuscator può effettivamente accelerare i programmi." Probabilmente è vero se vengono rimossi gli "elementi del programma non necessari", quindi il codice risultante diventa più piccolo e compatto, con un conseguente aumento delle prestazioni. Tuttavia, dubito che questo guadagno di prestazioni sarà di molto - dal momento che è improbabile che nel tuo programma ci siano molti elementi di programma che non sono necessari. –

risposta

4

I nomi degli identificativi vengono scartati dal compilatore/jitter, quindi questo non farà alcuna differenza.

+0

La frase relativa a Dotfuscator (l'ho aggiunta al mio post originale) ha senso? –

+0

@bsnote - La parte relativa alla rimozione di elementi di programma non necessari potrebbe (riducendo il consumo di memoria, quindi aumentando la velocità). – Oded

+1

@Oded, i metadati bene vengono ancora mantenuti dopo il jitter per l'uso in reflection. Quindi c'è un costo di memoria qui - e implicazioni sulle prestazioni se l'utilizzo della memoria si riversa su più pagine RAM. –

2

La prima volta che si esegue un'applicazione, MSIL viene compilato come codice macchina per quella piattaforma, dopodiché viene eseguito il codice macchina. Quindi, in teoria, penserei che la prima compilazione di MIGHT possa essere influenzata, ma il tempo di esecuzione del codice macchina finale che non usa quei nomi non cambierà di brutto dopo che la compilazione della macchina è terminata.