C# 是否有一个“;函数大小分析器&x201D;为.NET服务?

C# 是否有一个“;函数大小分析器&x201D;为.NET服务?,c#,.net,profiling,C#,.net,Profiling,我正在开发一个包含各种实用程序的小框架——越小越好,这样它就不会膨胀到使用它的可下载程序的大小。有没有工具可以显示我的方法、接口和类的字节大小 (我一直在删除各种类以查看文件大小的变化,但由于某些原因,DLL总是4KB的倍数,因此我无法准确地说出给定类的大小,更不用说方法了。无论如何,这种方法是一种痛苦,因为当我删除一个部分时,我还必须删除依赖它的任何代码位。) 我之前问过这个问题(结论是:没有,但在Linux中有一个有用的shell命令)。.NET Reflector显示了该信息(当反编译到M

我正在开发一个包含各种实用程序的小框架——越小越好,这样它就不会膨胀到使用它的可下载程序的大小。有没有工具可以显示我的方法、接口和类的字节大小

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


我之前问过这个问题(结论是:没有,但在Linux中有一个有用的shell命令)。

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

尝试反射。MethodInfo类中有一个方法可以获取MSIL表示:

编辑内容时文件大小不改变的原因是PE格式的每个部分都与特定的边界对齐。(例如,.text部分通常从偏移量0x1000开始),其他部分根据其内容的大小对齐。它们之间是“\0”的填充,这样当安装程序压缩文件时,空间将被有效地消除

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

Windows

ildasm
单声道


是否将通过命令行分解程序集(或其中的一部分)

要分析静态代码?和源的物理大小一样,以字节为单位,而不是运行时使用的内存量?Visual Studio本身会告诉您每个文件
x个字符
。如果您编写的代码运行速度快且大小不爆炸,则不必担心代码的大小,这通常远远高于普通程序员的大小。源文件的大小包括文档(在非常大的地方,在其他完全缺失的地方),并没有给我关于二进制表示中什么占据了最大空间的线索。例如,我有很多小类和助手方法;我很好奇相对于(比如)一系列小助手有多大单个大方法的大小。一些代码经常使用?:运算符,但是如果(…){x=…}或者{x=…},那么这可能不会比使用八行的代码节省太多二进制空间构造。但这只提供了方法的一小部分;正如马克在回答中所说,元数据通常比实际的函数数据大得多。这让我找到了一个二进制表示的大小表。如何?@qwertie:也许为它编写插件可以得到你想要的信息。这样你就可以重用其他人已知的工作元数据解析器。如果插件接口不提供对所需信息的访问,您可以修改元数据解析器本身,因为代码是开源的。
monodis