当我关闭{$ IMPORTEDDATA}时,是否有真正的性能提升?

时间:2011-06-01 11:05:02

标签: performance delphi memory delphi-7 delphi-xe

关闭{$ IMPORTEDDATA}后会有真正的性能提升吗?

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


更新

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

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

1 个答案:

答案 0 :(得分:4)

几乎从不

该指令仅涉及从另一个单元访问全局单位变量。

如果您使用{$ G +}

unit1;

interface

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

Global1将通过指针进行间接(如果从外部unit1访问时)
也将间接访问Form1(即从直接指针变为间接指针)。

如果您使用{$ G-},则对整数global的访问将是直接的,因此会稍快一些。

如果您在另一个单位和时间关键代码中使用全局公共单位变量,即几乎从不使用全局公共单位变量,这只会产生影响。

请参阅此文章:http://hallvards.blogspot.com/2006/09/hack13-access-globals-faster.html