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

标签 performance delphi memory delphi-7 delphi-xe

关闭 {$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/

相关文章:

delphi - 如何设计类依赖以避免德米特定律

c++ - "Invalid pointer dequeued from free list",malloc_error_break 中的断点没有帮助

Delphi - 从外部文件执行函数和过程

python - 检查 python 中一组数字中是否存在数字的最有效方法是什么

r - 将儒略日期转换为日历日期

python - 如何找到自己的行和列中最大的值?

delphi - 枚举 TWebRequest HTTP header 字段

c - BSD 上的 `ru_maxrss` 单元?

c++ - 在线编译器对计算机内存的影响

java - 更改 ArrayList 中元素顺序的最快方法是什么?