2011-04-10 4 views
2

다양한 유틸리티로 채워진 작은 프레임 워크를 개발 중입니다. 크기가 작을수록 더 많은 프로그램을 사용하기 때문에 다운로드 할 수있는 프로그램의 크기가 커지지 않습니다. 메소드, 인터페이스 및 클래스의 크기를 바이트 단위로 나타낼 수있는 도구가 있습니까?.NET 용 "함수 크기 프로파일 러"가 있습니까?

(파일 크기가 얼마나 달라지는 지 알기 위해 다양한 클래스를 제거했지만, DLL은 항상 4KB의 배수가되므로 주어진 클래스가 얼마나 큰지 정확히 알 수는 없습니다. 방법. 어쨌든, 그 접근 방식은 엉덩이에 고통이 있기 때문에 하나의 조각을 제거 할 때, 나는 또한 그것에 의존하는 코드를 제거해야합니다.)

나는이 질문을 이전에 for C++ (결론은 : 아니오 ,하지만 리눅스에서는 쉘 명령어가 유용하다).

+0

당신은 정적 코드를 _profile_하려면 명령 줄을 통해 어셈블리 (또는 그 일부)를 분해 할 것인가? 실제 크기 (바이트 단위)와 마찬가지로 런타임에서 사용되는 메모리 양이 아닌 소스의 크기와 비슷합니까? Visual Studio 자체는 파일 당'x 문자 '를 알려줍니다. –

+0

빠르게 실행되고 크기가 폭발하지 않는 코드를 작성하면 평균 프로그래머가하는 것보다 훨씬 높은 코드를 작성하면 코드 크기가 걱정되지 않아야합니다. –

+0

소스 파일의 크기에는 문서가 포함되어 있으며 (매우 큰 장소와 다른 곳에서는 볼 수없는 곳), 바이너리 표현에서 가장 많은 공간을 차지하는 것에 대한 단서를 제공하지 않습니다. 예를 들어 나는 작은 클래스와 도우미 메서드가 많이 있습니다. 나는 하나의 커다란 방법의 크기에 비례하여 일련의 작은 조력자들이 얼마나 큰지 궁금하다. 일부 코드는? : 연산자를 많이 사용하지만 아마도 (...) {x = ...} else {x = ...} 구문을 사용하는 코드에 비해 이진 공간을 많이 절약하지 못할 것입니다 . – Qwertie

답변

0

.NET 리플렉터 표시 정보

+0

메타 데이터, 클래스 또는 인터페이스 크기는 측정하지 않습니다. – Qwertie

+0

@qwertie : [Simple Assembly Explorer] (http://code.google.com/p/simple-assembly-explorer/) 용 플러그인을 작성하면 원하는 정보를 얻을 수 있습니다. 그렇게하면 다른 사람이 알고있는 작업 메타 데이터 파서를 재사용 할 수 있습니다. 플러그인 인터페이스가 필요한 정보에 액세스하지 못하는 경우 코드가 오픈 소스이기 때문에 메타 데이터 파서 자체를 수정할 수 있습니다. –

1

시도 반사 (MSIL에 디 컴파일는 각 명령에있어서의 선두로부터의 바이트 오프셋 인 "행 번호"로 표시 될 때). MethodInfo 클래스에 MSIL 표현을 가져 오는 메서드가 있습니다. http://msdn.microsoft.com/en-us/library/system.reflection.methodbase.getmethodbody.aspx

+1

그러나 그것은 단지 당신에게 방법의 아주 작은 부분만을 제공합니다; Mark와 마찬가지로 그는 메타 데이터가 실제 함수 데이터보다 훨씬 큽니다. – configurator

2

편집 할 때 파일 크기가 변경되지 않는 이유는 PE 형식의 각 섹션이 특정 경계에 정렬되기 때문입니다. (예 : .text 섹션은 오프셋 0x1000에서 시작합니다.) 다른 섹션은 내용의 크기에 따라 정렬됩니다. 그들 사이에 '\ 0'이 채워 지므로 파일이 설치 프로그램에 의해 압축 될 때 공간이 효과적으로 제거됩니다.

대개 수십 바이트의 크기이기 때문에 메서드의 크기에 대해 걱정할 필요가 있을지는 의문입니다. 각 메소드의 메타 데이터는 그 이상의 공간을 차지합니다. 메소드를 다시 작성하는 것보다 변수 이름과 문자열 리터럴을 줄임으로써 더 많은 공간을 절약 할 수 있습니다.

-1

윈도우

ildasm 

모노

monodis 

+0

어느 것이 이진 표현을 위해 크기 표로 안내합니까? – Qwertie

관련 문제