Skip to content
EntityQ1663799· pop 10· linked from 116 articles

内联展开

Sign in to save

Also known as inlining, code inlining, compiler inlining

将函数体展开至调用处的一种优化技术

In the Vinony graph

Vinony's link graph records 116 inbound references to 内联展开, and connects out to macro, evaluation strategy and subroutine.

Vinony files it under Compiler optimizations, Programming language comparisons and Subroutines.

Vinony links it to 10 Wikipedia language editions.

Wikidata facts

Show 2 more facts
different from
inline function
Sources (1)

via Wikidata · CC0

Article · 中文

内联展开(或称内联,下文或交替使用)是一种将函数体直接展开到的一种优化技术。它可以由手工指定(如inline关键字),或者经由自动完成。内联展开类似于,区别在于内联展开在编译时完成,而宏展开则可能在(如C/C++)、编译时(如Scheme)、运行时(如Scheme)时完成。 内联是一种重要的优化技术。内联的好处主要在于消除函数的调用开销(压栈,保护/恢复现场),但内联展开对于性能的提升不能一概而论,它可能导致生成的代码体积膨胀,并且影响指令缓存的命中率。有研究表明函数内联展开在缓存小的时候能提升性能,缓存较大的时候性能有可能下降。 除此之外,内联展开会引入大量冗余代码,需要通过一系列编译优化步骤进行缩减。比如一个记录(或理解为结构体)中的值是不变的,那么可以将其值直接替换到引用处;逻辑上不被使用到的分支代码或者变量,会被自动消除掉;逻辑上不可能进入的分支也可以消除掉。通过这些优化可以极大缩减冗余的代码,使得程序编译后获得较为紧凑的体量。

Abstract from DBpedia / Wikipedia · CC BY-SA

Connections

Categories