Domanda

Sto cercando attributi che posso utilizzare per garantire le migliori prestazioni di runtime per il mio .Net application dando dei suggerimenti per il caricatore, il compilatore JIT o ngen.

Per esempio, abbiamo DebuggableAttribute che dovrebbe essere impostato per eseguire il debug e non disattivare l'ottimizzazione per ottenere prestazioni ottimali.

[Debuggable(false, false)]

Ci sono altri che dovrei sapere?

È stato utile?

Soluzione

Ecma-335 specifica alcuni più CompilationRelaxations rilassante, la gestione delle eccezioni (il cosiddetto e-rilassato chiama) di cui all'Allegato F "Imprecisi, errori", ma non sono stati esposti da Microsoft.

In Particolare CompilationRelaxations.RelaxedArrayExceptions e CompilationRelaxations.RelaxedNullReferenceException sono menzionati.

Sarebbe interessante cosa succede quando si tenta di alcuni interi nel CompilationRelaxationsAttribute del costruttore ;)

Altri suggerimenti

E un altro:Le stringhe letterali (stringhe dichiarato nel codice sorgente) sono di default internati in una piscina per risparmiare memoria.

string s1 = "MyTest"; 
string s2 = new StringBuilder().Append("My").Append("Test").ToString(); 
string s3 = String.Intern(s2); 
Console.WriteLine((Object)s2==(Object)s1); // Different references.
Console.WriteLine((Object)s3==(Object)s1); // The same reference.

Anche se si risparmia memoria quando la stessa stringa letterale è utilizzata più volte, i costi di alcune cpu per mantenere la piscina e una volta che la stringa è la messa in piscina rimane lì fino a quando il processo viene interrotto.

Utilizzando CompilationRelaxationsAttribute si può dire che il compilatore JIT che davvero non si desidera interno tutte le stringhe letterali.

[assembly: CompilationRelaxations(CompilationRelaxations.NoStringInterning)]

Ho trovato un altro: NeutralResourcesLanguageAttribute.Secondo questo post del blog aiuta il caricatore nel trovare la giusta assembly satellite più veloce specificando la cultura se la corrente (neutro) di montaggio.

[NeutralResourcesLanguageAttribute("nl", UltimateResourceFallbackLocation.MainAssembly)]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top