Performance 关闭{$IMPORTEDDATA}是否有真正的性能提升?

Performance 关闭{$IMPORTEDDATA}是否有真正的性能提升?,performance,delphi,memory,delphi-7,delphi-xe,Performance,Delphi,Memory,Delphi 7,Delphi Xe,关闭{$IMPORTEDDATA}是否有真正的性能提升 唯一的说明是:“{$G-}指令禁止创建导入的数据引用。使用{$G-}可以提高内存访问效率,但可以防止出现的打包单元引用其他包中的变量。” 更新: 以下是我可以找到的更多信息: “调试部分有一个新选项“使用导入的数据引用(映射到$G)”,该选项 控制导入数据引用的创建(提高内存效率但防止 访问在其他运行时包中定义的全局变量)“几乎从不 此指令仅指从另一个单元访问全局单元变量 如果使用{$G+} unit1; interface var

关闭{$IMPORTEDDATA}是否有真正的性能提升

唯一的说明是:“{$G-}指令禁止创建导入的数据引用。使用{$G-}可以提高内存访问效率,但可以防止出现的打包单元引用其他包中的变量。”


更新:

以下是我可以找到的更多信息:

“调试部分有一个新选项“使用导入的数据引用(映射到$G)”,该选项 控制导入数据引用的创建(提高内存效率但防止
访问在其他运行时包中定义的全局变量)“

几乎从不

此指令仅指从另一个单元访问全局单元变量

如果使用{$G+}

unit1;

interface

var
  Global1: integer;   //<--  this is a global var in unit1.
  Form1: TForm1;      //<--  also a global var, but really a pointer
unit1;
接口
变量

Global1:整数//表格1也将被间接访问。Global1和Form1都是内存中包含的4字节数据。访问这4个字节的数据的方式是相同的,无论这4个字节的内容是表示整数还是指针。@Ken你自己确认了吗?我必须承认我没有,因为这会违背我所知道的关于这个主题的一切,我假设它。我刚刚测试了它,我确认一个表单变量是间接访问的。变量是指针这一事实并不改变您需要访问存储指针的地址来读取它的事实。变量总是“按地址”访问。这里进行间接寻址的原因是,当变量存储在包中时,exe代码无法知道包(以及变量)将存储在哪个地址。