Il codice non utilizzato influisce sull'assemblaggio dopo l'avvio (ad esempio la memoria)?

6

Dichiarazione di non responsabilità: provengo da uno sfondo PHP .

In PHP , potrei avere migliaia di file, che non vengono mai caricati, se non necessario, a causa della funzione autoloader (se è necessario del codice, verrebbe caricato)

Come funzionano gli assiemi di .NET? Caricano tutto il codice del programma in memoria all'avvio dell'applicazione?

Ad esempio, posso avere alcune aree con più controller:

  • Area 1
    • Controller 1
  • Area 2
    • Controller 1
    • ...
    • Controller 42

Se Area 2 è facoltativo per configurazione, sarebbe un'Idea migliore estrarre questa Area in un Assemblaggio separato e caricarla se necessario?

    
posta Christian Gollhardt 26.01.2016 - 20:09
fonte

1 risposta

5

Do they load all the program code into the memory on application startup?

No

Puoi avere Assemblee nel tuo progetto quanti ne hai bisogno. Gli assembly sono referenziati tramite la parola chiave using . Gli assembly non utilizzati vengono filtrati al momento della compilazione stesso. Ad esempio, è possibile avere due assemblies di riferimento come:

using System.Windows.Forms;
using System.Web.UI.WebControls;

Se non hai usato assembly System.Windows.Forms , ciò non influirà sulle prestazioni del tuo codice ma potrebbe influire sul tempo di compilazione e sulle prestazioni Intellisense.

Vedi questa domanda StackOverflow per gli usi non utilizzati .

Gli assembly di riferimento non vengono caricati immediatamente, ma vengono caricati al volo secondo necessità. Quindi, indipendentemente dal fatto che si abbia un riferimento all'assembly in un progetto di livello superiore, o un assembly dipendente di assiemi, gli assembly sono in genere caricati su una base necessaria, a meno che non siano caricati esplicitamente da codice utente Lo stesso vale per le assemblee dipendenti. Vedi When viene caricata una dipendenza da assembly .NET per ulteriori informazioni.

[EDIT]

Le classi di ogni assembly vengono caricate solo quando vengono utilizzate. Non tutte le classi verranno caricate contemporaneamente nella memoria. Anche le classi statiche vengono caricate nella memoria principale al primo riferimento. Pertanto, la maggior parte delle classi non utilizzate nell'assembly non degraderà le prestazioni, ma aumenterà lo spazio su disco richiesto (non i requisiti di memoria).

Quindi la risposta semplice è NO .

    
risposta data 28.01.2016 - 06:12
fonte

Leggi altre domande sui tag