未使用单位的影响是什么?它会使输出的exe更大吗?
What's the impact of non-used units? Will it make the output exe larger?
我用未使用的单元做了一些测试。我的测试没有明显的 exe 大小差异。但是我在文档中找不到任何信息。我的问题是,未使用的单位使用会增加输出文件的大小吗?
当您将一些未使用的单元添加到代码的“使用部分”时,这不是一个好习惯,但它本身会增加最终 exe-file 的大小。编译器分析整个代码并删除所有未使用的部分,因此增加了编译时间。但是你需要记住一件棘手的事情——non-uses 单元可以包含不能直接使用的 code-parts。它可以是一个单元的“初始化部分”或一些可以自动触发的“Class构造函数”,因此编译器会将它(以及所有使用的types/units链)包含到你的exe-file.还有一件事 - 当你编译一些 bpl-file - 编译器优化不会以同样的方式工作,因为它无法知道你将在将来使用这个 bpl 的项目中从这个 bpl 使用什么。
P.S。如果你想知道你的应用程序中真正使用了哪些单位以及初始化是如何工作的——你可以在“system.pas”过程中放置一个断点,程序 InitUnits。在那里你可以看到 unitCount 并且可以进入你的应用程序使用的所有初始化部分(如果它在你的 Delphi 版本中可用,甚至可以查看源代码)
我用未使用的单元做了一些测试。我的测试没有明显的 exe 大小差异。但是我在文档中找不到任何信息。我的问题是,未使用的单位使用会增加输出文件的大小吗?
当您将一些未使用的单元添加到代码的“使用部分”时,这不是一个好习惯,但它本身会增加最终 exe-file 的大小。编译器分析整个代码并删除所有未使用的部分,因此增加了编译时间。但是你需要记住一件棘手的事情——non-uses 单元可以包含不能直接使用的 code-parts。它可以是一个单元的“初始化部分”或一些可以自动触发的“Class构造函数”,因此编译器会将它(以及所有使用的types/units链)包含到你的exe-file.还有一件事 - 当你编译一些 bpl-file - 编译器优化不会以同样的方式工作,因为它无法知道你将在将来使用这个 bpl 的项目中从这个 bpl 使用什么。
P.S。如果你想知道你的应用程序中真正使用了哪些单位以及初始化是如何工作的——你可以在“system.pas”过程中放置一个断点,程序 InitUnits。在那里你可以看到 unitCount 并且可以进入你的应用程序使用的所有初始化部分(如果它在你的 Delphi 版本中可用,甚至可以查看源代码)