문제

로더, JIT 컴파일러 또는 ngen에 힌트를 제공하여 .Net 애플리케이션에 대한 최상의 런타임 성능을 보장하는 데 사용할 수 있는 속성을 찾고 있습니다.

예를 들어 우리는 Debuggable속성 최적의 성능을 위해 디버그하지 않고 최적화를 비활성화하지 않도록 설정해야 합니다.

[Debuggable(false, false)]

제가 알아야 할 다른 사람이 있나요?

도움이 되었습니까?

해결책

Ecma-335는 Annex F "부정확한 오류"에서 완화된 예외 처리(소위 e-relaxed 호출)를 위해 몇 가지 CompilationRelaxations를 더 지정하지만 Microsoft에서는 이를 공개하지 않았습니다.

특히 CompilationRelaxations.RelaxedArrayExceptions 및 CompilationRelaxations.RelaxedNullReferenceException이 언급되어 있습니다.

CompilationRelaxationsAttribute의 ctor에서 일부 정수를 시도할 때 무슨 일이 일어나는지 흥미로울 것입니다.)

다른 팁

그리고 또 다른:리터럴 문자열(소스 코드에 선언된 문자열)은 기본적으로 인턴 메모리를 절약하기 위해 풀에 넣습니다.

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.

동일한 리터럴 문자열을 여러 번 사용하면 메모리가 절약되지만 풀을 유지하는 데 약간의 CPU가 필요하며 문자열이 풀에 들어가면 프로세스가 중지될 때까지 풀에 유지됩니다.

사용 CompilationRelaxationsAttribute 모든 리터럴 문자열을 인턴하는 것을 원하지 않는다고 JIT 컴파일러에 알릴 수 있습니다.

[assembly: CompilationRelaxations(CompilationRelaxations.NoStringInterning)]

다른 것을 찾았습니다: NeutralResourcesLanguageAttribute.에 따르면 이것 블로그 게시물에서는 현재(중립) 어셈블리인 경우 문화권을 지정하여 로더가 올바른 위성 어셈블리를 더 빠르게 찾는 데 도움이 됩니다.

[NeutralResourcesLanguageAttribute("nl", UltimateResourceFallbackLocation.MainAssembly)]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top