【发布时间】:2015-01-05 11:41:01
【问题描述】:
我做了一个实验,使用 VC++ 6.0、VS 2005、VS 2008、VS 2010 和 VS 2012 构建默认 MFC 对话框。
每个都是在静态库中使用 MFC 构建的,因为潜在用户通常没有安装所需运行时的权限。每个使用的多字节字符集都是在发布模式下构建的,并且支持 Winsock。这是在 Windows 7 机器上。都是 32 位应用程序。
VS 2012 应用程序定义了 _AFX_NO_MFC_CONTROLS_IN_DIALOGS 开关以使其更小,这几乎没有任何作用。结果如下:
VC++6.0 204 KB
VS 2005 304 KB
VS 2008 1690 KB
VS 2010 1724 KB
VS 2012 3888 KB
我惊讶地发现使用 VS 2012 构建的应用程序的大小是使用 2005 构建的应用程序的 10 倍以上。这一切都是由于安全性增强吗?
由于旧 IDE 存在安全漏洞,我的公司正在逐步淘汰除 VS 2010 和 VS 2012 之外的所有版本。我通常构建和维护大型且复杂的基于 MFC 对话框的应用程序,其中许多应用程序同时运行,因此我希望尽量减少它们的总内存占用。
除了放弃 MFC 并迁移到 C#/WPF 或 QT 之外,它们都有自己的缺点;
- 我可以在 VS 2012 中使用一些神奇的编译器设置来消除这种膨胀吗?
【问题讨论】:
-
你为什么在乎? 4 MB 什么都没有。将其与具有相同功能(即:无)的 Qt 应用程序进行比较,大小约为 15-20 MB。减少内存占用固然不错,但 4 MB 也没什么好担心的,因为一个普通的浏览器会话很容易吃掉半个 gig。
标签: c++ visual-studio-2010 visual-studio-2012 mfc