있습니다. 방금 vs2010의 새로운 성능 분석 도구를 실행했으며이 기능이 대부분의 CPU 리소스를 소모한다는 사실이 밝혀졌습니다.Field.SetValue 대체
내가 사용할 수있는 다른 것이 있습니까?
있습니다. 방금 vs2010의 새로운 성능 분석 도구를 실행했으며이 기능이 대부분의 CPU 리소스를 소모한다는 사실이 밝혀졌습니다.Field.SetValue 대체
내가 사용할 수있는 다른 것이 있습니까?
당신이 일하기 위해 일리노이를 알아 보는 데 드는 시간을 즐기는 일부 소수의 사람들에게 속한 경우가 아니라면, 당신을 위해이 일을하기 위해 도서관을 선택하는 것이 더 나을 것이라고 믿습니다.
Fasterflect은 v2.0에서 방금 출시되었으며 .NET 3.5와 4.0을 모두 지원할 수 있습니다. 경량 코드 생성 및 캐싱을 사용하여 정규 반영보다 4-5 배 속도 향상 또는 거의 기본 속도 (동적 메서드의 초기 JIT 컴파일을위한 상당한 오버 헤드는 계산하지 않음)에 대해 생성 된 대리자에 대한 직접 액세스를 사용합니다.
면책 조항 : 본인은 기고자로서 상기 프로젝트에 참여했습니다.
확실한 답변을 제공하기 위해 상황에 대한 세부 정보는 충분하지 않지만 동일한 필드를 반복적으로 설정하는 경우 (런타임까지는 어떤 필드를 모르지만) 설정할 동적 방법을 만들 수 있습니다 필드를 반복적으로 호출합니다. 자세한 내용은 DynamicMethod class (how to 문서, case study with examples)을 참조하십시오.
(System.Linq.Expressions 클래스를 사용하여) 필드를 설정하고 LambdaExpression.Compile을 사용하여 필드를 컴파일하는 식을 작성하여 더 쉽게 동일한 것을 얻을 수 있어야합니다. 일반적으로 Reflection.Emit을 사용하는 것보다 쉽지만 일반적으로 필드는 비공개 멤버이므로 사용자에게 적합하지 않을 수 있습니다.
다른 필드를 많이 설정하고 각 필드를 몇 번만 설정하는 경우 동적 메서드를 생성하거나 식을 컴파일하는 오버 헤드가 FieldInfo.SetValue를 호출하는 것보다 훨씬 입니다. 항상 그렇듯이 결정하기 전에 측정하십시오!
프로필러를 사용한 후에 * 문제가 있음을 알게되었습니다. 물론 FieldInfo.SetValue가 느리며, 실제로 * 원인 * 문제가 있습니까? –