【问题标题】:What is the difference between Interprocedural and Intraprocedural analysis?过程间分析和过程内分析有什么区别?
【发布时间】:2020-05-27 21:36:36
【问题描述】:

我进行了很多搜索以找到过程间分析和过程内分析之间的区别。据我所知,程序内分析适用于单个程序,而程序间分析适用于所有程序。这对我来说仍然不清楚,更具体的是如何将这种过程间分析应用于所有过程?

有人可以给我一个解释吗?

【问题讨论】:

  • 通过从多个过程收集信息,编译器可以发出一些优化,例如缓存调用链中多个过程使用的一些不可变状态

标签: compiler-optimization static-analysis


【解决方案1】:

Inter程序(想想 Internet,一个网络的网络,与 Intranet,单网络)分析是对多个函数进行操作的分析,例如以下 Inter生产优化:

function main() {
   return getConstant() * rand()
}

function getConstant() {
   return 42
}

可以内联到:

function main() {
   return 42 * rand()
}

以及以下Intra程序优化:

function getNrOfSecondsInWeek() {
  secondsAMinute := 60
  minutesAnHour := 60
  hoursADay := 24
  daysAWeek := 7
  return secondsAMinute * minutesAnHour * hoursADay * daysAWeek;
}

可以内联到:

function getNrOfSecondsInWeek() {
  return 604800;
}

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 2016-03-31
    • 2020-10-28
    • 1970-01-01
    • 2017-01-23
    • 2020-01-04
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多