심층적 인 최적화에 대한 환경 설정을 지정하여 .NET JIT 컴파일러의 동작을 변경하는 방법이 있는지 궁금합니다. 그것이 실패한 경우, 프로파일 유도가 아닌 일종의 최적화를 할 수 있다면 좋을 것입니다.컴파일 타임에 비해 성능이 향상되도록 .NET JIT 컴파일러를 변경할 수있는 방법이 있습니까?
13
A
답변
19
어셈블리를 컴파일 할 때 설정됩니다.
- IL 최적화
- JIT 네이티브 코드 품질 : 최적화의 두 가지 유형이 있습니다.
기본 설정이 최적화되지 않은 IL을 의미한다이
/optimize- /debug-
이며, 네이티브 코드를 최적화.
/optimize /debug(+/full/pdbonly)
이것은 최적화되지 않은 IL 및 최적화되지 않은 기본 코드 (최상의 디버그 설정)를 의미합니다.
/optimize+ /debug(-/+/full/pdbonly)
이 IL 최적화 된 네이티브 코드를 최적화 된 생산하고 마지막으로
는 가장 빠른 성능을 얻을 수 있습니다.최적화되지 않은 IL을 생성 할 때 컴파일러는 코드 전체에 NOP 명령을 삽입합니다. for, while, else, try, catch 등의 제어 흐름 명령에 중단 점을 설정하면 코드를 디버그하기가 쉽습니다.
CLR은 코드를 최적화하는 데 매우 효과적입니다. 메소드가 JIT 된 후에는 호출 또는 callvirt 명령어의 포인터가 원시 코드로 직접 지정됩니다.
또한 CLR은 코드를 JIT 할 때 사용할 수있는 아키텍처 트릭을 이용합니다. 이것은 Jgen을 통해 실행 된 어셈블리가 Ngen을 사용하여 사전 컴파일 된 어셈블리보다 빠르게 실행된다는 것을 의미합니다. NGEN은 모든 플랫폼에서 컴파일되고 어떤 트릭도 활용하지 않기 때문에 시작 시간이 다소 느리지 만 그래도 Ngen을 사용합니다.
관련 문제
- 1. .net JIT 컴파일러를 속여 다른 방법을 실행하는 방법이 있습니까?
- 2. .NET의 리플렉션에 비해 JIT 컴파일 링 호출 속도가 느림
- 3. .NET에서 왜 JIT 시간이 아닌 컴파일 타임에 상수가 계산됩니까?
- 4. 칩 공급 업체의 .Net JIT 지원이 있습니까?
- 5. Java JIT 컴파일 원시 바이트 코드 디 컴파일
- 6. 컴파일 타임에 Java에 상수 값을 정의하는 방법이 있습니까
- 7. 컴파일 타임에 관리되는 (닷넷) dll에 가입 (링크?) 할 수있는 방법이 있습니까?
- 8. .NET : JIT 컴파일러 사용 방법
- 9. 컴파일 타임에 함수를 선택하십시오.
- 10. 컴파일 타임에 swf로 데이터를 주입
- 11. 컴파일 타임에 이벤트 수신?
- 12. asp.net에서 편집 - 컴파일 - 디버그주기를 빠르게하는 방법이 있습니까?
- 13. 컴파일 타임에 상속을 결정
- 14. 면도기 뷰의 JIT 컴파일 리소스
- 15. 쓰기 가능한 페이지로 인해 JIT 성능이 저하됩니까?
- 16. .NET JIT 코드 캐시 유출?
- 17. 누락 된 어셈블리 참조가있는 JIT 컴파일
- 18. 컴파일 타임에 무한 루프가 발생합니까?
- 19. Java 코드 및 JIT 컴파일
- 20. 컴파일 타임에 C++ 타입 등록
- 21. Windows에서 링크 타임에 malloc을 재정의하는 방법이 있습니까?
- 22. 컴파일 타임에 사용되는 응용 상수
- 23. 컴파일 타임에 enum 값 확인
- 24. PHP (Ubuntu)에서 현재 사용자를 변경할 수있는 방법이 있습니까?
- 25. NodeJS에서 기본 세션 테이블 필드 이름을 변경할 수있는 방법이 있습니까?
- 26. 사용자가 wxStyledTextCtrl을 변경할 때 알림을받을 수있는 방법이 있습니까?
- 27. SharePoint에서 문서 라이브러리보기를 사용자 단위로 변경할 수있는 방법이 있습니까?
- 28. 설정을 추가하여 TextView 글꼴 유형을 변경할 수있는 방법이 있습니까?
- 29. combox에서 특정 항목의 배경을 변경할 수있는 방법이 있습니까?
- 30. Silverlight에서 프로그래밍 방식으로 Data/ItemTemplate을 변경할 수있는 방법이 있습니까?
+1 니스. IDE에서 정확히 어디에서이 값을 설정합니까? – Trap
VS2010 (및 이전 버전 IIRC)에서는 릴리즈 구성에서 기본적으로 켜져있는 "코드 최적화"프로젝트 설정을 활성화합니다. (이것은/optimize +와 동등한'/ optimize'와 동일합니다.) 최적화 도구는 [아주 멀리 떨어져 있습니다.] (http://stackoverflow.com/questions/10369421/why-does-adding-local) -variables-make-net-code-slower). –
기계 별 트릭 AFAIK는 없습니다. 나는 .NET 팀이 여러 버전의 JIT Optimizer (매우 복잡한 짐승)를 유지하는 것이 잠재적 인 이익에 비해 너무 비싸다고 느꼈다고 들었습니다. –