.NET有“功能大小分析器”吗?

时间:2011-04-10 21:55:31

标签: c# .net profiling

我正在开发一个充满各种实用程序的小框架 - 越小越好,因此它不会膨胀使用它的可下载程序的大小。有没有工具可以显示我的方法,接口和类的字节大小?

(我一直在删除各种类以查看文件大小的变化,但由于某种原因,DLL总是4 KB的倍数,所以我无法确切地知道给定类的大小,更不用说了无论如何,这种方法很麻烦,因为当我删除一个部分时,我还必须删除任何依赖它的代码。)

我之前提到过这个问题for C++(结论是:不,但在Linux中有一个有用的shell命令)。

4 个答案:

答案 0 :(得分:2)

编辑内容时文件不会改变大小的原因是因为PE格式的每个部分都与某些边界对齐。 (例如,.text部分通常从偏移量0x1000开始),其他部分对齐,具体取决于其内容的大小。它们之间是'\ 0'的填充,以便在安装程序压缩文件时有效地消除空间。

您需要担心方法的大小是值得怀疑的,因为它们通常会达到数十字节的大小。每种方法的元数据占用的空间都比这多。通过缩短变量名和字符串文字,可以比重写方法节省更多空间。

答案 1 :(得分:1)

尝试反思。 MethodInfo类中有一个方法来获取MSIL表示: http://msdn.microsoft.com/en-us/library/system.reflection.methodbase.getmethodbody.aspx

答案 2 :(得分:0)

.NET Reflector显示该信息(当反编译为MSIL时,每条指令都以“行号”显示,该行号是从方法开始的偏移量,以字节为单位)

答案 3 :(得分:-1)

ildasm

monodis

将通过命令行

反汇编程序集(或部分程序集)