【发布时间】:2019-07-17 13:03:06
【问题描述】:
groups of JIT optimisations 有一个很好的概述,提到
- 简单的内联
- 调用图内联
- 尾递归消除
- 虚拟呼叫保护优化
- 本地数据流分析和优化
- 注册使用优化
- Java 习惯用法的简化
- 代码重新排序、拆分和删除
- 循环减少和反转
- 循环跨步和循环不变代码运动
- 循环展开和剥离
- 循环版本控制和专业化
- 异常导向优化
- 开关分析
- 全球数据流分析和优化
- 部分冗余消除
- 逃逸分析
- GC 和内存分配优化
- 同步优化
1) 每种情况都有简单的例子吗?这里每个答案的一个例子会很棒。但也欢迎仅链接到会谈/幻灯片/文章。
2) 除了logging via PrintAssembly 以“之前/之后”的形式显示之外,如何可视化 JIT 更改?
【问题讨论】:
-
这些都是标准的编译器优化。尝试一本书,例如绿龙书。太宽泛了。
-
例如一篇很好的详细文章,展示了如何消除超出范围的数组访问 darksi.de/d.sea-of-nodes