3

Visual Studio C/C++ 프로젝트에서 "속성 페이지 | C/C++ | 최적화"에서 컴파일러의 최적화 설정을 쉽게 수정할 수 있습니다. 예를 들어, "Omit Frame Pointers"와 같은 고급 최적화뿐 아니라/O2 및/O3과 같은 다양한 최적화 수준을 제공 할 수 있습니다.Visual Studio에서 자세한 C# 컴파일러 최적화 설정을 어디에서 수정할 수 있습니까?

그러나 Visual Studio의 C# 프로젝트에서 해당 UI를 간단히 찾을 수는 없습니다. 내가 찾을 수있는 것은 단지 최적화를 끄는 것입니다. "코드 최적화"확인란 만 있으면됩니다.

C# 사용자가 C/C++와 같은 자세한 컴파일러의 최적화를 제어 할 수 있습니까? 명령 줄에서 컴파일러 옵션을 제공해야합니까?

alt text http://i32.tinypic.com/28ststh.png

답변

8

C# 코드 최적화의 대부분은 C# 컴파일러가 아니라 JIT 컴파일러 수준에서 진행됩니다. 기본적으로 C 또는 C++에서 사용할 수있는 세부 설정은 없습니다.

런타임에는 GC 전략과 같이 조정할 수있는 몇 가지 성능 관련 요소가 있지만 많지는 않습니다.

내가 명령 줄에서 등 벤치 마크 테스트를 짓고 있어요 때 난 그냥이 같은 것을 사용하는 경향이 : 변화를 내가 일치하는 PDB 파일의 존재를 보았다

csc /o+ /debug- Test.cs 

(나는 믿을 을 성능, 아마도 던져 질 예외의 비용 측면에서, 따라서 debug- 스위치 ...하지만 내가 틀릴 수 있습니다.)

EDIT : 최적화의 각 비트 차이를보고 싶다면, 하나의 접근 방식이 있습니다 흥미로운 것으로 입증 될 수 있습니다 :

  • 16,는
  • 사용 ILDASM 또는 반사판의 차이는
  • 이 (ILASM을 사용하여) 수동으로 시간에 같은 변화 하나를 적용하고 얼마나 많은 각을 측정 무엇을 참조하십시오 IL 모드에 최적화없이 동일한 코드를 컴파일 하나는
+0

감사합니다. 성능 차이가 w.r.t를보고 싶었습니다. C# 프로그램의 컴파일러 옵션 설정 – minjang

4

AFAIK C# 컴파일러는 이러한 상세한 최적화 특성이 없다. 아마 최적화가 활성화되거나 비활성화됩니다.

+0

합니다. – minjang

1

비트 OT를 가지고 있지만이 문제를 보는 사람이 유용 할 수 있습니다

이 메소드 서명이 추가 : [MethodImpl (MethodImplOptions합니다.NoOptimization)]

은 해당 메서드에 대한 컴파일러 최적화를 해제합니다.

은 자세한 내용은 여기를 참조하십시오 : 너무 나쁜 소식 https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.methodimploptions%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

관련 문제