未使用的单位有何影响?它会使输出的exe更大吗?

发布于 2025-01-16 00:09:15 字数 84 浏览 1 评论 0原文

我用未使用的单位做了一些测试。根据我的测试,没有明显的 exe 大小差异。但我在文档中找不到任何信息。我的问题是,未使用的单位使用会增加输出文件的大小吗?

I did some test with non-used units. There is no clear exe size difference by my testing. But I can't find any information in the document. My question is, will non-used unit uses increase the output file size?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忆离笙 2025-01-23 00:09:15

当您将一些未使用的单元添加到代码的“使用部分”时,这不是一个好的做法,但它本身会增加最终 exe 文件的大小。编译器会分析整个代码并删除所有未使用的部分,因此会增加编译时间。但您需要记住一件棘手的事情 - 非使用单元可以包含不能直接使用的代码部分。它可以是一个单元的“初始化部分”,也可以是一些可以自动触发的“类构造函数”,因此编译器会将它(以及所有使用的类型/单元链)包含到您的 exe 文件中。另一件事 - 当您编译某些 bpl 文件时 - 编译器优化不会以相同的方式工作,因为它无法知道您将在将来使用此 bpl 的项目中使用此 bpl 中的内容。

PS 如果您想知道应用程序中实际使用了哪些单位以及初始化如何工作,您可以在“system.pas”过程 InitUnits 中放置一个断点。在那里你可以看到unitCount,并且可以进入你的应用程序使用的所有初始化部分(甚至可以查看源代码,如果它在你的Delphi版本中可用)

When you add some unused units into the “uses part” of your code it’s not good practice, but it increases the size of the final exe-file by itself. Compiler analyzes the whole code and cuts off all unused parts, so it increases compilation time. But you need to remember one tricky thing – non-uses units can contain code-parts that can be used not in a direct way. It can be the “initialization part” of a unit or some “Class constructors” that can be triggered automatically, so the compiler will include it(and all chains of used types/units) into your exe-file. One more thing – when you compile some bpl-file – compiler optimization does not work in the same way, because it can not know what you will use from this bpl in future projects which will use this bpl.

P.S. If you want to know what units are really used in your application and how initialization works– you can place a breakpoint in “system.pas”, procedure InitUnits. There you can see unitCount and can step into initialization part of all used by your application (even see sources, if it’s available in your Delphi edition)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文