Pergunta

Estou procurando atributos que posso usar para garantir o melhor desempenho de tempo de execução para meu aplicativo .Net, dando dicas ao carregador, ao compilador JIT ou ao ngen.

Por exemplo temos Atributo Debuggable que deve ser configurado para não depurar e não desabilitar a otimização para desempenho ideal.

[Debuggable(false, false)]

Há algum outro que eu deva conhecer?

Foi útil?

Solução

Ecma-335 especifica mais alguns CompilationRelaxations para tratamento de exceções relaxado (as chamadas chamadas e-relaxadas) no Anexo F "Falhas imprecisas", mas elas não foram expostas pela Microsoft.

Especificamente, CompilationRelaxations.RelaxedArrayExceptions e CompilationRelaxations.RelaxedNullReferenceException são mencionados lá.

Seria interessante o que acontece quando você apenas tenta alguns números inteiros no ctor do CompilationRelaxationsAttribute;)

Outras dicas

E outro:Strings literais (strings declaradas no código-fonte) são por padrão internado em um pool para economizar memória.

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.

Embora economize memória quando a mesma string literal é usada várias vezes, custa um pouco de CPU para manter o pool e, uma vez que uma string é colocada no pool, ela permanece lá até que o processo seja interrompido.

Usando CompilaçãoRelaxamentoAtributo você pode dizer ao compilador JIT que realmente não deseja que ele interno todas as strings literais.

[assembly: CompilationRelaxations(CompilationRelaxations.NoStringInterning)]

Encontrei outro: NeutralResourcesLanguageAttribute.De acordo com esse postagem no blog ajuda o carregador a encontrar os conjuntos de satélite corretos com mais rapidez, especificando a cultura do conjunto atual (neutro).

[NeutralResourcesLanguageAttribute("nl", UltimateResourceFallbackLocation.MainAssembly)]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top