Windows上的可执行模块是否有理想的大小?

时间:2009-08-16 11:32:41

标签: windows dll operating-system executable

我一直在注意许多应用程序的.exe文件大小。

我看到Visual Studio 2005的.exe大小为453KB,VS2008为1.04MB,因为它们将应用程序分成许多部分(.exe +许多.dll文件)。

我还看到MS Outlook有一个非常大的.exe文件(11.8MB),而MS Word非常小(398KB)!

在思考了我所看到的事情后,我留下了这些问题:

  1. 使用小的.exe是否有优势,即使应用程序的最终大小(所有加载的DLL)都大得多?
  2. 如果是这样,开始将应用程序分解为单独的模块的大小是多少?

3 个答案:

答案 0 :(得分:4)

大型可执行文件可能具有更少的共享库(更少的可重用代码),这意味着应用程序可能比使用共享库的应用程序更加占用内存。如果您希望系统具有最小的内存占用,则需要共享库。

一个大的exe可能更自包含,这可能会更容易保持稳定的部署。

答案 1 :(得分:3)

作为一般规则,大尺寸exe可能意味着您收集单个文件中的所有依赖项,因此没有像dll hell这样的依赖性问题,但每次您想要修复小模块中的任何内容时,用户必须下载此大文件EXE !!!

另一方面,小exe可能意味着您将应用程序模块化到不同的模块,因此很容易维护和单独升级这些模块,用户不必下载大块exe

答案 2 :(得分:2)

这些文章:

  

深入了解Win32可移植可执行文件格式

     

Part 1Part 2

似乎是Windows可执行文件(和DLL)使用的文件格式的一个非常好的摘要。

据我所见,作者没有提及任何关于可执行文件的某个大小是否优于更小/更大的大小。

所以这个可能意味着可执行文件的大小对Windows来说并不重要。

另一方面,我认为当您在Windows中打开可执行文件时,病毒扫描程序(如果有)会在将文件交给操作系统执行之前扫描该文件。所以这个可以意味着,更大的可执行文件意味着在扫描应用程序存在的情况下启动时间更长。