performance - 当我使用条件编译参数排除代码时,为什么 VB6 EXE 文件大小没有变化?

标签 performance compiler-construction vb6 compilation compiler-optimization

基本上,当在我的 VB6 代码中声明 Windows API 函数时,会附带许多需要声明或与该函数一起使用的常量,实际上,通常这些常量中的大多数都不会被使用,您最终只会使用一个在进行您的 API 调用时,它们大约是这样,所以我使用条件编译参数来排除这些(和其他东西),使用类似这样的东西:

IncludeUnused = 0 : Testing = 1

(我就是这样设置两个条件编译参数的(默认都是 bool 类型)

因此,许多未使用的东西被排除在外:

#If IncludeUnused Then
' Some constant declarations and API declarations go here, sometimes functions
' and function calls go here as well, so it's not just declarations and constants
#End If

我还使用了一个类似的包装器,它使用了在 VB6 属性窗口“Make”选项卡的Conditional Compilation Argument 输入字段中声明的Testing bool 值。 Testing bool 值用于在我处于测试模式时显示消息框和类似的东西,当然,如果我有 Testing,这些消息框将被删除(不显示) > 设置为 0(我在测试时显然是 1)。

问题是,我尝试将 IncludeUnusedTesting 设置为 0 和 1,反之亦然,总共有四 (4) 种组合,无论我是哪种组合将这些值设置为,我的 VB6 EXE 的输出 EXE 文件大小不会改变!使用 Fast Code 和 Small Code 编译为 Native Code 时始终为 49,152。

此外,如果我在 TestingIncludeUnused 的四 (4) 种组合下编译为 p 代码,无论如何我总是以文件大小 32,768 结束.

这让我发疯,因为它让我相信实际上并没有发生任何变化,即使发生了变化。为什么当代码段被排除在编译之外时,文件大小仍然相同?我错过了什么或做错了什么,或者我计算错了什么?

我考虑过 VB6 可能不会自动编译最终输出 EXE 中未使用的代码的选项,但我从一些来源读到这不是真的,因为如果包含它,它就会被编译(如果我错了请纠正我),如果这是正确的,那么就不需要使用 IncludeUnused bool 值来删除未使用的代码...?

如果有人能阐明这些想法,我将不胜感激。

最佳答案

很可能大小差异很小,exe大小被填充到下一个512或1024字节对齐。尝试使用 zip 压缩 exe 并查看 zip 文件大小是否不同。

关于performance - 当我使用条件编译参数排除代码时,为什么 VB6 EXE 文件大小没有变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320285/

相关文章:

java - 什么是 Azul "Zing"?

javascript - 是否可以优化此代码以获得最大性能?

java - 如何在 Java 中进行混淆器、优化器和混淆器

c - C 编译器使用的数据布局(对齐概念)

process - VB6 如何检查进程 ID 是否已终止

c - 在 for 循环中有效地打印每 x 次迭代

java - 循环内声明的变量是否受单次迭代的范围限制?

memory - 小内存模型和大内存模型有什么区别?

VB6 - 如何自动打破命令行(或msbuild)的兼容性

vb6 - 如何在 VB6 中显示 MDI 表单级别的消息