医院品牌网站建设,宁波seo网络推广推荐公众号,网络最好的运营商,鄞州中学网站谁做的文章目录 编译器与解释器解释器 vs 编译器对比编译方式Just-In-Time (JIT) 编译Ahead-Of-Time (AOT) 编译JIT#xff08;即时编译#xff09;与 AOT#xff08;提前编译#xff09;对比什么时候用到JIT什么时候用到AOT#xff1f; Pass 和 IRPass 传统编译器编译器的发展历… 文章目录 编译器与解释器解释器 vs 编译器对比编译方式Just-In-Time (JIT) 编译Ahead-Of-Time (AOT) 编译JIT即时编译与 AOT提前编译对比什么时候用到JIT什么时候用到AOT Pass 和 IRPass 传统编译器编译器的发展历史History of CompilerGCC 编译过程与原理GCC Process and PrincipleLLVM/Clang 编译过程与原理LLVM/Clang Process and Principle AI 编译器AI 编译器的发展历史History of AI CompilerAI 编译器的通用架构Base Common Architecture 参考 编译器与解释器
解释器 vs 编译器对比
特性解释器 (Interpreter)编译器 (Compiler)输入处理每次读取一行整个程序一次性处理输出不生成中间代码生成中间目标代码如 .obj 或 .class工作机制编译和执行同时进行先完成全部编译再执行存储不保存机器代码存储编译后的机器代码如 .exe执行方式解释过程即执行逐行运行执行与编译分离运行编译后的独立程序程序生成无输出程序每次执行需重新解释源码生成可独立运行的程序如 .exe代码修改直接修改源码即可运行需重新编译修改后的源码运行速度慢逐行解释快直接执行机器码内存占用较少无中间代码较多需存储目标代码错误处理逐行显示错误需纠正后继续解释下一行编译时显示所有错误必须修正才能生成可执行程序错误监测容易实时反馈需完整编译后反馈适用语言PHP、Perl、Python、RubyC、C、C#、Scala、Java典型步骤1. 创建代码2. 直接解释执行1. 创建代码2. 语法分析3. 生成机器码4. 链接运行
编译方式
程序主要有两种运行方式
静态编译程序在执行前全部被编译为机器码称为AOTAheadof time即“提前编译动态解释程序边编译边运行通常将这种类型称为 JITJust in time即“即时编译
Just-In-Time (JIT) 编译
运行时将代码编译为机器码适用于动态语言具有更高的运行时优化能力。
Ahead-Of-Time (AOT) 编译
在程序运行前将代码编译为目标机器码启动速度快适合静态语言。
JIT即时编译与 AOT提前编译对比
特性JITJust in Time即时编译AOTAhead of Time提前编译优点硬件适配优化✅ 根据当前硬件实时生成最优机器指令❌ 无法针对运行环境动态优化运行时优化✅ 根据程序实际运行情况优化指令序列❌ 静态优化无法利用运行时信息动态链接支持✅ 唯一支持动态链接的方案❌ 无法支持动态链接内存利用率✅ 可基于进程内存实际情况调整代码❌ 内存分配固定缺点运行时性能消耗❌ 编译占用运行时间可能导致卡顿✅ 无运行时编译开销优化限制❌ 需权衡编译时间和优化程度✅ 可进行充分静态优化启动性能❌ 初始编译无法立即达到最高性能✅ 启动即达峰值性能程序启动速度❌ 初始编译影响启动速度✅ 显著加快程序启动安装/部署影响✅ 无额外安装时间❌ 增加程序安装时间语言一致性✅ 保持高级语言特性❌ 可能牺牲语言一致性存储占用✅ 不保存编译结果❌ 预编译内容占用额外存储空间典型应用场景Java/JVM、JavaScript引擎、动态语言环境C/C程序、系统级开发、移动端应用
什么时候用到JIT什么时候用到AOT
选 JIT 当
需要动态优化、跨平台或快速开发迭代。允许牺牲部分启动时间换取长期性能如服务端应用。
选 AOT 当
要求快速启动、资源受限或需静态分发如移动端 APP。代码稳定且无需运行时调整如系统级软件。
Pass 和 IR
Pass编译器的一个处理阶段用于分析和优化程序。IRIntermediate Representation中间表示是源代码与目标代码之间的抽象形式方便分析与优化。
Pass 传统编译器
编译器的发展历史History of Compiler
早期编译器将高级语言翻译成机器代码随着程序复杂度增加出现多阶段、可优化的编译器设计
GCC 编译过程与原理GCC Process and Principle
预处理Preprocessing编译Compilation汇编Assembly链接Linking支持多平台和多种优化选项
LLVM/Clang 编译过程与原理LLVM/Clang Process and Principle
模块化设计前端Clang、中端LLVM IR、后端目标代码生成分离易于扩展和优化广泛用于研究与工业界 AI 编译器
AI 编译器的发展历史History of AI Compiler
初期尝试使用启发式方法优化编译过程随着机器学习的发展逐渐应用神经网络和强化学习进行自动优化
AI 编译器的通用架构Base Common Architecture
前端将源代码转为 IRIR 优化器使用 AI 方法预测最优优化策略后端生成器将优化后的 IR 转为机器码反馈环节通过运行数据训练模型持续优化编译效果 参考
编译器和解释器啥区别AOT和JIT啥区别Pass和IR又是什么【AI编译器】系列01篇编译器基础介绍