Tracing JIT

简介: 在一个从Java源码编译到JVM字节码的编译器(如javac、ECJ)里,一个“编译单元”(CompilationUnit)指的是一个Java源文件。而在Dalvik VM的JIT里也有一个结构体名为“CompilationUnit”,这个千万不能跟Java源码级的编译单元弄混了——它在这里指的就是一个“trace”。

 

在一个从Java源码编译到JVM字节码的编译器(如javac、ECJ)里,一个“编译单元”(CompilationUnit)指的是一个Java源文件。而在Dalvik VM的JIT里也有一个结构体名为“CompilationUnit”,这个千万不能跟Java源码级的编译单元弄混了——它在这里指的就是一个“trace”。 
许多早期的JIT编译器以“函数”或者“方法”为单位进行编译,并通过函数/方法内联来降低调用成本、扩大优化的作用域。但一个函数/方法中也可能存在热路径与冷路径的区别,如果以函数/方法为粒度来编译,很可能会在冷路径上浪费了编译的时间和空间,却没有得到执行速度的提升。为此,许多JIT编译器会记录方法内分支的执行频率,在JIT编译时只对热路径编译,将冷路径生成为“uncommon trap”,等真的执行到冷路径时跳回到解释器或其它备用实行方式继续。 
Tracing JIT则能够更简单有效的获取到涉及循环的热代码中的执行路径。(<< 这里回头继续补充) 

http://hllvm.group.iteye.com/group/topic/17798

 

http://loccs.sjtu.edu.cn/typecho/index.php/archives/176/

相关文章
|
算法 Java 编译器
【JIT技术】
【JIT技术】
116 0
|
7月前
|
算法 Java 测试技术
【深入探究 C++ 日志库性能比较】glog、log4cplus 和 spdlog 的日志输出性能分析
【深入探究 C++ 日志库性能比较】glog、log4cplus 和 spdlog 的日志输出性能分析
1912 0
你需要了解的JIT Debugging
你需要了解的JIT Debugging
|
Java 编译器 Go
译 | Profiling Go Programs(二)
译 | Profiling Go Programs(二)
98 0
|
Java Go
译 | Profiling Go Programs(三)
译 | Profiling Go Programs(三)
48 0
|
存储 缓存 算法
译 | Profiling Go Programs(四)
译 | Profiling Go Programs
75 0
|
算法 Ubuntu Java
译 | Profiling Go Programs(一)
译 | Profiling Go Programs
106 0
|
分布式计算 监控 Java
Uber jvm profiler 使用
Uber jvm profiler 使用
293 0
Uber jvm profiler 使用
|
机器学习/深度学习 自然语言处理 前端开发
TorchScript 解读:jit 中的 subgraph rewriter
现代的深度学习推理框架通常遵循编译器的范式,将模型的中间表示(IR)会分为两部分:包括与硬件、环境等无关的前端(frontend)以及针对特定环境的后端(backend),比如 TVM 的 Relay 和 tir 就是一个典型的例子。在 PyTorch 的 jit 中源码中,也包含前端与后端的部分(不过后端部分的更新似乎不是很频繁)。frontend 目录下有对 Graph IR 的定义,function_schema 的解析工具,以及将 torchscript 转换成 SSA(static single assignment)形式的转换器等等。
284 0
TorchScript 解读:jit 中的 subgraph rewriter
|
JavaScript 前端开发 安全
eBPF Tracing 入门教程与实例
在 LPC'18(Linux Plumber's conference) 会议上,至少有24个关于 eBPF 的演讲。eBPF 这一实用技术,将是每个开发者需要掌握的技巧。 也许你的新年目标得再多一个了:学习 eBPF!
655 0
eBPF Tracing 入门教程与实例