如何找出哪些方法会增加"exe"的大小

How to figure out which methods increases size of 'exe'

本文关键字:exe 增加 何找出 方法      更新时间:2023-10-16

我正试图在MS Visual Studio Express 2010中编写我的第一个"demoscene"应用程序。突然我意识到,我的二进制文件在完全优化的大小发布版本中从16kb扩展到了~100kb。我的目标尺寸是64k。有没有办法以某种方式"浏览"二进制文件,找出哪些方法会占用大量空间,哪些方法应该重写?我真的很想知道我的二进制文件是由什么组成的。

从我在网上发现的情况来看,VS2010并不是最好的demoscene编译器,但我仍然想了解我的.exe文件中发生了什么。

我认为应该让MSVC为您生成一个映射文件。这是一个文件,它将告诉您可执行文件中大多数不同函数的地址。连续地址之间的差异应该告诉你函数占用了多少空间。要生成映射文件,请添加/MAP链接器选项。有关更多信息,请参阅:http://msdn.microsoft.com/en-us/library/k7xkk3e2(v=VS.100(.aspx

您可以从可执行文件中去除许多不必要的内容,并使用mew等实用程序对其进行压缩。

我发现这对检查可执行文件的大小很有用(尽管不适用于demoscene类型的东西(:http://aras-p.info/projSizer.html

我要说的是:如果你正在使用标准库,那么立即停止。这是一个巨大的代码膨胀。例如,每个唯一的用法std::sort会增加大约5KB,许多标准容器也有类似的数字(当然,这取决于您使用的函数,但通常它们会添加大量代码(。

此外,我不喜欢演示场景,但我相信人们会使用Crinkler来压缩他们的可执行文件。

使用您的版本控制系统来查看是什么导致了增长。接下来,我会在夜间构建期间记录构建的exe大小。别忘了,您可以通过编译器设置来优化最小大小。