Question

Je recherche des attributs que je peux utiliser pour assurer les meilleures performances d'exécution de mon application .Net en donnant des astuces au chargeur, au compilateur JIT ou à ngen.

Par exemple, nous devons DebuggableAttribute ne pas être débogué. et ne pas désactiver l'optimisation pour des performances optimales.

[Debuggable(false, false)]

Y a-t-il d'autres personnes que je devrais connaître?

Était-ce utile?

La solution

Ecma-335 spécifie quelques autres CompilationRelaxations pour la gestion simplifiée des exceptions (appelées e-relaxés) dans l'Annexe F "Erreurs imprécises", mais elles n'ont pas été exposées par Microsoft.

Spécifiquement, CompilationRelaxations.RelaxedArrayExceptions et CompilationRelaxations.RelaxedNullReferenceException y sont mentionnés.

Il serait intéressant de savoir ce qui se passe lorsque vous essayez juste quelques entiers dans le ctor de CompilationRelaxationsAttribute;)

Autres conseils

Autre exemple: les chaînes littérales (déclarées dans le code source) sont par défaut interné dans un pool pour économiser de la mémoire.

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.

Bien que cela économise de la mémoire lorsque la même chaîne littérale est utilisée plusieurs fois, le coût de la maintenance du pool est onéreux, et une fois qu'une chaîne est insérée dans le pool, elle y reste jusqu'à ce que le processus soit arrêté.

Utilisation de CompilationRelaxationsAttribute le compilateur JIT que vous ne voulez vraiment pas qu'il interne toutes les chaînes littérales.

[assembly: CompilationRelaxations(CompilationRelaxations.NoStringInterning)]

J'en ai trouvé un autre: NeutralResourcesLanguageAttribute . Selon ce billet de blog , il aide le chargeur à trouver les bons assemblys satellites plus rapidement en spécifiant la culture si l'assemblage actuel (neutre).

[NeutralResourcesLanguageAttribute("nl", UltimateResourceFallbackLocation.MainAssembly)]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top