为什么编译文件的大小会减少?

时间:2009-12-19 18:15:01

标签: c# windows-services

我在项目窗口服务上做了一些修改。以前它是56kb。但经过修改后,它的大小减少到54kb。实际修改增加了编码数量,那么为什么尺寸正在减小,对此功能的任何想法

4 个答案:

答案 0 :(得分:2)

C#代码行与为其生成的IL之间没有明显的相关性。特别是匿名方法,lambda,迭代器和Linq查询在C#中可以非常紧凑,但会产生大量的IL。你必须使用ildasm.exe来到它的底部。如果你真的想找出......

答案 1 :(得分:2)

您在源代码中所做的更改会根据其性质生成较小的机器代码,或者编译时选项可能已更改。

或者,文件系统可能会根据文件占用的块数对齐文件。

答案 2 :(得分:0)

如果您正在查看可执行文件的大小,那么这是因为元信息的大小发生了变化。

如果您正在查看与TaskMgr类似的内存大小,那么可能是因为它因运行时历史而执行的方式略有不同。

答案 3 :(得分:0)

没有必要的mata信息。部分对齐可能已经改变(当然这包括元)。使用DUMPBIN命令检查节大小,以比较新旧可执行文件。

它可以是内联优化。如果编译器选择此方法对于内联优化而言太大,则不会在每个调用位置复制代码。这将减少文件大小。

VC使用512个字节来舍入可执行文件。因此,删除一个字符串可以减少512字节的文件大小(如果你很幸运)。