我想知道以下使用单位顺序是否正确。

uses
  FastMM4 in 'Fast\FastMM4\FastMM4.pas',
  VCLFixPack in 'VCLFixPack.pas',
  FastMove in 'Fast\FastMove\FastMove.pas',
  FastCode in 'Fast\FastCode\FastCode.pas',
  FastMM4Messages in 'Fast\FastMM4\FastMM4Messages.pas',


我为什么要打扰订单?

最佳答案

您在这里有三段代码:


快速MM
VCLFixPack
快速编码


在执行任何堆分配之前,安装替换内存管理器FastMM非常重要。因此,我认为很明显,这必须是第一个包含的单位。您也可以将两个FastMM单元放在一起。

其他单元则更改内存中的代码,以修正错误(VCLFixPack)或提高性能(FastCode)。尽管您分别标识了FastMoveFastCode,但实际上FastCode单元实际上安装了一组改进的功能,这些功能是在十几个单独的单元中定义的。

在包含VCL单元之前,安装VCL修补程序似乎很重要。因此,VCLFixPack应该出现在任何VCL单元之前。

至于FastCode,由于它只会影响性能,因此您可以在.dpr文件中的任何位置完美地使用它。初始化代码是否与原始RTL代码一起运行可能并不重要。也就是说,为了保持一致,将所有这些更改运行时行为的单元放在一起是有意义的。所以我会这样写你的.dpr使用子句:

uses
  FastMM4 in 'Fast\FastMM4\FastMM4.pas',
  FastMM4Messages in 'Fast\FastMM4\FastMM4Messages.pas',
  FastCode in 'Fast\FastCode\FastCode.pas',
  VCLFixPack in 'VCLFixPack.pas',
  ....


我将FastCode放在VCLFixPack之前,因为从逻辑上讲,RTL的级别低于VCL。但是,这两种方法都不重要。但是您必须选择一个,这就是我的理由。

我还省略了对FastMove单元的明确引用。它由FastCode以及其他许多单位使用,如果要省略其他单位,则也可以省略FastMove

10-06 02:38