2009-12-19 52 views
0

我对我的项目windowservice做了一些修改。以前它是56kb。但修改后其大小减少到54kb。实际上修改增加了编码的数量,为什么大小在减少,关于此功能的任何想法为什么我的编译文件的大小减少了?

+0

没有看到代码,甚至是更改,都无法确定。 – Ken 2009-12-19 20:53:44

回答

0

如果您正在查看可执行文件的大小,那是因为大小元信息已更改。

如果您正在寻找像TaskMgr一样的内存大小,那很可能是因为它运行时的历史记录有点不同。

+0

我的问题是为什么减小尺寸 – peter 2009-12-19 18:34:56

0

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

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

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

+0

我的问题是为什么减小尺寸 – peter 2009-12-19 18:34:13

2

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

+0

我的问题是为什么减小尺寸 – peter 2009-12-19 18:33:31

+2

因为您使用的那些昂贵的结构较少?我不知道,你忘了说你改变了什么。 – 2009-12-19 18:35:17

+0

我发送一些属性,其中包含一些具有安装程序类的服务的字符串值,并可以在services.msc中看到另一个没有安装程序类并由另一个具有安装程序类的服务器服务调用的窗口服务 – peter 2009-12-19 18:40:34

2

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

或者,文件系统可以根据它占用的块数调整文件。

相关问题