首页> 外文期刊>Software >Ablego: a function outlining and partial inlining framework
【24h】

Ablego: a function outlining and partial inlining framework

机译:Ablego:功能概述和部分内联框架

获取原文
获取原文并翻译 | 示例
       

摘要

Frequently invoked large functions are common in non-numeric applications. These large functions present challenges to modern compilers not only because they require more time and resources at compilation time, but also because they may prevent optimizations such as function inlining. Often large portions of the code in a hot function f_(host) are executed much less frequently than f_(host) itself. Partial inlining is a natural solution to the problems caused by including cold code segments that are seldom executed into hot functions that are frequently invoked. When applying partial inlining, a compiler outlines cold statements from a hot function f_(host). After outlining, f_(host) becomes smaller and thus can be easily inlined. This paper presents Ablego, a framework for function outlining and partial inlining that includes several innovations: (1) an abstract-syntax-tree-based analysis and transformation to form cold regions for outlining; (2) a set of flexible heuristics to control the aggressiveness of function outlining; (3) several possible function outlining strategies; (4) explicit variable spilling, a new technique that overcomes negative side-effects of function outlining. With the proper strategy, partial inlining improves performance by up to 5.75%. A performance study also suggests that partial inlining's effect on enabling more aggressive inlining is limited. The performance improvement from partial inlining actually comes from better code placement and better code generation.
机译:经常调用的大函数在非数字应用程序中很常见。这些大型函数给现代编译器带来了挑战,不仅因为它们在编译时需要更多的时间和资源,而且还因为它们可能阻止诸如函数内联的优化。通常,热函数f_(host)中的大部分代码执行的频率要比f_(host)本身低得多。部分内联是一种自然解决方案,可解决由于将很少执行的冷代码段包含到经常调用的热函数中而引起的问题。当应用部分内联时,编译器将从热函数f_(host)概述冷语句。概述之后,f_(host)变小,因此可以轻松地进行内联。本文介绍了Ablego,它是函数概述和部分内联的框架,其中包括几个创新:(1)基于抽象句法树的分析和转换,以形成概述的冷区域; (2)一组灵活的启发式方法来控制功能概述的积极性; (3)几种可能的功能概述策略; (4)显式变量溢出,一种克服了函数概述的负面影响的新技术。使用适当的策略,部分内联可将性能提高多达5.75%。一项性能研究还表明,部分内联对实现更积极的内联的作用是有限的。部分内联带来的性能提高实际上来自更好的代码放置和更好的代码生成。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号