我想知道以下使用单位顺序是否正确。
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)。尽管您分别标识了FastMove
和FastCode
,但实际上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
。