我正在尝试在MS Visual Studio Express 2010中编写我的第一个'demoscene'应用程序。突然我意识到,我的二进制文件在完全优化的大小版本中从16kb扩展到~100kb。我的目标大小是64k。有没有办法以某种方式“浏览”二进制来弄清楚,哪些方法占用了大量空间,我应该重写哪些?我真的想知道我的二进制文件是由什么组成的。
从我在网络上发现的,VS2010不是最好的demoscenes编译器,但我仍然想了解我的.exe文件中发生了什么。
答案 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大小。并且不要忘记您可以使用编译器设置优化最小尺寸。