关闭 {$IMPORTEDDATA} 后是否能真正提高性能?
manual只是说:“{$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
Global1
将通过指针间接访问(如果从外部单元1访问)
Form1
也将被间接访问(即从直接指针更改为间接指针)。
如果您使用{$G-},则对整数global
的访问将是直接的,因此速度会稍快一些。
只有当您在另一个单元中和时间关键的代码中使用全局公共(public)单元变量时,这才会产生影响,即几乎从不使用。
查看这篇文章:http://hallvards.blogspot.com/2006/09/hack13-access-globals-faster.html
关于performance - 当我关闭 {$IMPORTEDDATA} 时,性能是否有真正的提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6200135/