我怎么知道Delphi函数是否会被内联?

时间:2011-02-17 15:12:06

标签: delphi inline compiler-warnings

当您将函数标记为inline时,您提示编译器此函数是内联的候选函数。编译器仍然可以确定它不是一个好主意,并忽略它。

  1. 有没有办法在不使用反汇编程序的情况下查看函数是否内联? 是否有一些我不知道的编译器警告?

  2. 编译器使用的内联规则是什么?是否存在导致函数永远不会内联的结构?

2 个答案:

答案 0 :(得分:6)

如果编译器无法内联您的函数,则会发出提示。 documentation解释了可以和不可内联的规则。

关于编译器是否内联的决定性决定(与是否可以内联相对),它们没有记录,可以被视为实现细节。

我记得你最近commented就我对一个不同问题的一个答案表示,一旦内联,特定功能的速度提高了10倍。显然,你对内联感兴趣,但在这种特殊情况下,我无法相信具有如此多浮点运算的函数的巨大收益。我怀疑内联实际上并没有为您提供您认为的性能改进。

答案 1 :(得分:2)

在构建项目后,您可以查看装订线中的蓝点。如果函数旁边有蓝点,则至少没有内联一次。

我认为你不能依赖编译器发出的提示。它会告诉您何时没有内联,因为函数所在的文件不在interface uses子句中。如果是因为其他原因通常不会告诉你。