`
raging_sweet
  • 浏览: 58971 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

编译期优化

    博客分类:
  • Java
 
阅读更多

三类编译器:

 

  • 前端编译器将JAVA编译成CLASS文件,JAVAC,ECJ
  • JIT编译器把字节码转换成机器码的过程,HOTSPOT VM的C1,C2编译器
  • AOT编译器静态提前编译器,直接将JAVA编译成本地机器码的过程
Annotation,可以看作是一组编译器的插件,这些插件可以读取,修改,添加抽象语法树的任意元素,如果这些插件对语法树进行了修改,那么编译器将回到解析及填充符号表的过程重新处理,知道所有的annotation都没有再对语法树的修改位置,每次循环成为一个round.

常量折叠:int a= 1+2; -> int a=3;

JAVA语法糖
主要包括泛型,变长参数,自动装箱等

泛型,在JAVA中,只在程序源码中存在,编译后泛型将被替换成原生类型(在相应位置插入强制转型代码)。
在JAVA泛型中,两种情况值得注意,
public static void method(List<String> list)
public static void method(List<Integer> list) 
这两个方法是不能并存的
但如果返回值不一样,就可以通过编译了,因为CLASS文件格式中,方法描述符包括返回值

自动装箱,是通过valueOf实现的

遍历循环是通过Iterator实现的

JAVA编译时,如果碰到常量作为判断条件,则会自动执行为真时的语句,而省去为假时的语句







 

分享到:
评论

相关推荐

    论文研究-一种针对异构计算平台的编译期优化方法.pdf

    针对OpenCL(open computing language)编译时期的特有模式, 提出了一种新的针对异构计算平台的编译期优化方法。该方法根据设备端和主机端的各自特点, 将设备端的一些冗余操作提到主机端或者新的设备端kernel中去执行,...

    JVM:早期(编译期)优化的深入理解

    今天小编就为大家分享一篇关于JVM:早期(编译期)优化的深入理解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Intimate在编译期对apk内部代码的调用进行反射优化

    Intimate 提供了友好的 API 让 java 反射的使用更加简单平滑。 其最核心的价值在于 Intimate 将在编译期对 apk 内部代码的调用进行反射优化,完全免除反射的效率问题,使得反射调用就像普通调用一样快捷且无任何代价

    Unity编译速度优化以及开发期代码热更

    1.提高Unity编译dll的速度 2.不重启unity也能让新修改的cs代码即刻生效 3.不会使用请留言

    java虚拟机知识点整理

    编译期编译优化 运行期优化 高效并发-java内存模型与线程 线程安全与锁优化 1 标记-清除算法:首先标记所有需要回收的对象(引用计数或可达性分析算法标记),在标记完成后统一回收所有被标记的对象。 缺点:效率问题...

    深入剖析Swift性能优化

    2014年,苹果公司在WWDC上发布Swift这一新的编程语言。...针对Swift性能提升这一问题,我们可以从概念上拆分为两个部分:编译器:Swift编译器进行的性能优化,从阶段分为编译期和运行期,内容分为时间优化和空

    Java进阶教程解密JVM视频教程

    手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。...6. 运行期优化 第五章:内存模型 1. Java 内存模型 2. 可见性 3. 有序性 4. CAS 与原子类 5. synchronized 优化

    3_类加载与字节码技术2

    1. 类文件结构 2. 字节码指令 3. 编译期处理 4. 类加载阶段 5. 类加载器 6. 运行期优化 1. 类文件结构

    20191208-EB-RISCV.pdf

    GCC 编译器上的 codesize 对比,使用更加严谨的优化编译选项进行再次报 告,并将结合 ARM 官方公开的 ARM Compiler 优化数据来分析 RISCV 的潜 在优化空间。本期报告还将解读来自 Berkeley CS 系的技术报告《Reduce ...

    【通信仿真】基于matlab LDPC编译码误码率仿真【含Matlab源码 1935期】.zip

    1、完整代码,可直接运行 ,包运行 2、紫极神光擅长领域:路径规划、优化求解、神经网络预测、图像处理、语音处理等多种领域Matlab仿真 3、版本:2014a或2019b

    android 性能分析(优化)-利用AOP技术,字节码方法插桩,实现 android 耗时统计

    在android开发的过程中,不管是开发SDK...今天就来给大家介绍一个,利用AOP技术,字节码编译期方法插桩的方式,统计android耗时的工具。 github地址:https://github.com/miqt/PluginTools 这是一个android 方法耗时

    exceptional c++:47个c++工程难题、编程问题和解决方案(英文版)

    条款26:将编译期依赖性降到最低——之一 123 条款27:将编译期依赖性降到最低——之二 127 条款28:将编译期依赖性降到最低——之三 132 条款29:编译防火墙 135 条款30:fast pimpl惯用法 138 5 名字查找、...

    详解基于vue-cli优化的webpack配置

    最近的项目度过了开始忙碌的基建期,也慢慢轻松下来,准备记录一下自己最近webpack优化的措施,希望有温故知新的效果。 项目采用的是vue全家桶,构建配置都是基于vue-cli去改进的。关于原始webpack配置大家可以看下...

    人力资源管理软件(完全免费)

    日期提醒,可对生日、合同期、证件期限等自动提醒 保险管理(人力资源软件) 培训历史管理 员工证件管理(人力资源软件) 员工奖励管理(人力资源软件) 员工惩罚管理(人力资源软件) 支持显示定制 生成各类统计报表...

    Java虚拟机

    第10章 早期(编译期)优化 10.1 概述 10.2 Javac编译器 10.2.1 Javac的源码与调试 10.2.2 解析与填充符号表 10.2.3 注解处理器 10.2.4 语义分析与字节码生成 10.3 Java语法糖的味道 10.3.1 泛型与类型擦除...

    linux运维趋势 2013年5月第27期

    本文件为《Linux运维趋势》2013年5月号,总第27期。 本期目录 04 提高系统故障排查效率的法宝 文/Matt Prigge 编译/核子可乐 06 十款轻量级故障排查工具 文/Mike Williams 编译/核子可乐 10 Ubuntu 13.04 系统管理...

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 246 9.3.2 思路 / 247 9.3.3 实现 / 248 9.3.4 验证 / 255 9.4 本章小结 / 256 第四部分 程序编译与代码优化 第10章 早期(编译期)优化 / 258 10.1 概述 / 258 10.2 Javac编译器 / 259 10.2.1 Javac的...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    21-MySQL5.5编译方式安装实战.avi 第二部 MySQL多实例安装与企业应用场景(10节) 22-MySQL数据库多实例介绍.avi 23-MySQL数据库多实例的优势和问题介绍.avi 24-MySQL数据库多实例的门户企业应用场景.avi 25-...

    PrimoCache V2.6.0 重置试用期

    我则修改也算作优化,几百行变为几十行。 去掉无效工具或不必用的工具和以及相应的代码,尽 可能的减少使用没必要用的第三方工具。简化流程,只留干货。实现多版本支持。 和过去的2.2版本相比,PrimoCache对试用期...

    JAVA中JVM的重排序详细介绍

    重排序通常是编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段。重排序分为两类:编译期重排序和运行期重排序,分别对应编译时和运行时环境

Global site tag (gtag.js) - Google Analytics