【环球聚看点】常见代码优化技术
时间:2023-06-17 00:23:48来源:博客园


(相关资料图)

常见代码优化技术复写传播

复写传播(Inline Expansion)是一种编译器优化技术,它通过将函数调用处的函数体直接插入到调用处来减少函数调用的开销。

当编译器进行复写传播时,它会检查函数调用的上下文并判断是否可以将函数的代码直接嵌入到调用处,而不是通过函数调用的方式进行执行。这样可以减少函数调用的开销,例如函数调用的栈帧创建、参数传递和返回值处理等。

public class InlineExpansionExample {    public static void main(String[] args) {        int result = calculateSum(10, 20);        System.out.println("Result: " + result);    }        public static int calculateSum(int a, int b) {        return add(a, b);    }        public static int add(int x, int y) {        return x + y;    }}// 优化后public class InlineExpansionExample {    public static void main(String[] args) {        int result = 10 + 20;  // 直接插入 add 方法的函数体        System.out.println("Result: " + result);    }}
死代码删除

死代码删除是指计算的结果绝不被引用的语句

一些优化变换可能会造成死代码。

代码外提

是一种编译器优化技术,它将循环中的计算操作或指令移到循环外部执行,以减少循环内部的计算量和循环迭代次数,从而提高程序的性能。

循环优化的其它重要技术

归纳变量删除强度削弱
// 示例while(i <= limit - 2) ...// 代码外提后变成t = limit - 2;while(i <= t) ...
归纳变量删除

归纳变量删除(Induction Variable Elimination)是一种编译器优化技术,用于在循环中消除不必要的归纳变量。归纳变量通常是在循环中被更新和使用的变量,其值随着循环的迭代而变化。

public class InductionVariableEliminationExample {    public static void main(String[] args) {        int sum = 0;                for (int i = 0; i < 5; i++) {            int square = i * i; // 归纳变量,计算 i 的平方            sum += square;        }                System.out.println("Sum: " + sum);    }}public class InductionVariableEliminationExample {    public static void main(String[] args) {        int sum = 0;                for (int i = 0; i < 5; i++) {            sum += i * i; // 直接使用 i * i 的结果,消除了归纳变量        }                System.out.println("Sum: " + sum);    }}
强度削弱

强度削弱(Strength Reduction)是一种编译器优化技术,用于将高强度操作(例如乘法和除法)替换为等效但低强度的操作(例如移位和加法),以减少计算的复杂性和提高程序的执行效率。

public class StrengthReductionExample {    public static void main(String[] args) {        int n = 10;        int sum = 0;                for (int i = 0; i < n; i++) {            sum += i * 2; // 高强度操作:乘法        }                System.out.println("Sum: " + sum);    }}public class StrengthReductionExample {    public static void main(String[] args) {        int n = 10;        int sum = 0;                for (int i = 0; i < n; i++) {            sum += i << 1; // 强度削弱:移位操作替代乘法        }                System.out.println("Sum: " + sum);    }}

标签:

生活指南
  • 双峰农商银行:外拓营销不止步 深耕细作再提速

    娄底新闻网讯(通讯员李伟)为更好地支持和服务身边小微企业及个体工商

  • 小威少婉拒休斯顿,鹈鹕向火箭狮子大开口,乌度卡满意阿门汤普森

    美国媒体《clutchpoints》表示鹈鹕不愿意贱卖锡安,他们会在谈判中向火

  • 2023年夏玉米单产提升技术意见_全球速讯

    当前,黄淮海等地区夏玉米大面积播种全面展开,是落实关键措施、提高播

  • 45只高比例送转股走出贴权走势

    证券时报•数据宝统计,2022年共531家公司分配方案中包含送转,送转比

  • 7项目总投资82亿元!腾“云”驾“物”制胜新赛道_世界时快讯

    6月16日上午,长沙市雨花区举行“湘商回归”暨促进企业扩能升级项目集

  • 中国民航局:提升千万级以上机场航班近机位靠桥率

    中新社北京6月16日电 (记者 刘文文)中国民用航空局近期将围绕“提

  • 芯片进口减少,国产芯片真崛起了吗?

    近日,海关公布数据现实,今年一季度,我国进口芯片的数量为1082亿颗,

  • 世界热文:仰望登临粤港澳大湾区车展,仰望U8、U9成展会焦点

    2023年6月16日,以“‘汽’象焕新,先行向未来”为主题的粤港澳大湾区

  • 世界要闻:沪滇广告与品牌联合研究与协同促进中心在云南民族大学成立

    6月16日,由上海大学、上海市广告协会、云南民族大学、云南省广告协会

  • 【三夏进行时】海报|三晋夏收农忙“丰”景

    又是一年夏收时。近日,山西省各地小麦陆续进入收获期,田间地头,处处

  • 环球微头条丨描写人物动作的词语造句 描写人物动作的词语

    今天来聊聊关于描写人物动作的词语造句,描写人物动作的词语的文章,现

  • 绿岩生态(874107):拟10派5元,共派送现金1424.25万元-天天资讯

    基础层企业绿岩生态(874107)发布公告,公司2022年年度权益分派方案已

  • 浙江鼎力:6月5日接受机构调研,Boston Common Asset、Polen Capital等多家机构参与_焦点短讯

    2023年6月7日浙江鼎力(603338)发布公告称公司于2023年6月5日接受机构

  • 七星台镇:热诚服务上肩 凝聚奋进力量-今日讯

    枝江融媒(通讯员赵子君)“我和我的祖国,一刻也不能分割……”6月13

  • 今日热搜:奕斯伟计算完成超30亿元D轮融资

    奕斯伟计算是一家以RISC-V为核心的新一代计算架构芯片与方案提供商,围

  • 福建清流:打游戏也找陪练?劳务关系成立,陪练费应支付|环球动态

    日前,福建省清流县人民法院审理了一起涉游戏陪练的案件,判决认定双方

  • 民生
    • 疤痕性皮肤可以割双眼皮吗(疤痕性皮肤)

    • 英国将向乌克兰提供6000万英镑援助

    • 位格论 苏晓勇_位格

    • 每日速递:欧盟民调显示超6成民众不愿介入台海冲突 郭正亮:日本比例更高