如何确定哪些方法增加'exe'的大小

时间:2011-07-03 18:48:26

标签: c++ executable visual-studio-2010

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

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

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

我会说:如果您使用的是标准库,请立即停止。这是一个巨大的代码膨胀。例如,每个唯一用法std::sort增加大约5KB,并且许多标准容器的数字相似(当然,它取决于您使用的功能,但通常它们会添加大量代码)。

另外,我没有进入演示场景,但我相信人们使用Crinkler压缩他们的可执行文件。

答案 3 :(得分:0)

使用您的版本控制系统查看导致增加的原因。继续,Id在夜间构建期间记录构建的exe大小。并且不要忘记您可以使用编译器设置优化最小尺寸。