나는 어셈블리의 모든 메소드 (즉, 많은 메소드)에 CIL을 추가하는 빌드 후 CIL 제직을하고 있습니다. 각 메소드는 특정 값이 널 (NULL)인지 점검합니다. 예 (CIL 코드의 C# Reflector'd 버전) :필드 대 실제 성능
// CIL woven region start
if (MyType.Something == null) {
// ... some new stuff
}
// CIL woven region end
하는 Field 대 속성으로 MyType.Something 데의 성능에 미치는 영향은 무엇입니까? 나는 C# 컴파일러가 특별한 최적화를 수행하고 그 경우 성능에 영향을 미치지 않아야한다는 것을 읽었다. 그러나 직접 CIL 코드 (C# 컴파일러가 아닌)의 경우는 어떨까? 또는 이러한 최적화를 허용하는 JIT 컴파일러입니까? (직접 CIL 코드는 여전히 이점이 있습니까?)
정적 속성의 접근 자에 대한 OpCode.Call이 Ldsfld보다 성능이 떨어집니다 (어셈블리의 모든 메서드가 짜여져 있으므로 수만 번의 호출을 염두에 둡니다)?
감사합니다.
왜 구현하겠습니까? – Andrey
무엇을 구현합니까? – Jeff