JIT:吞吐量高,有运行时性能加成,可以跑得更快,并可以做到动态生成代码等,但是相对启动速度较慢,并需要一定时间和调用频率才能触发 JIT 的分层机制

AOT:内存占用低,启动速度快,可以无需 runtime 运行,直接将 runtime 静态链接至最终的程序中,但是无运行时性能加成,不能根据程序运行情况做进一步的优化

以 CoreCLR 为例,不做 AOT 编译的 asp.net core 网站项目,通常冷启动时间需要 150ms左右,但是启动后随着程序运行,JIT 再次生成更优的代码,甚至会为频繁使用的泛型类特化出一套实现;而经过 ReadyToRun 技术编译初始化部分,可以既保留 JIT,同时将程序初始化的部分采用 AOT 技术加速,将启动时间减少到 80ms 左右;最后是纯 AOT,采用CoreRT 编译后,启动速度可以直接达到 10ms 以下。

AWS 的 FaaS 服务中,.NET Core 的函数计算服务利用 ReadyToRun/CoreRT 等技术,使得其启动速度成为冠军。

不过 .NET Core 内存占用本身就非常小,进行 AOT 编译带来的内存占用优势几乎可以忽略不计,然而 Full AOT 却使得很多高级特性无法实现,例如表达式树动态生成 IL 等。对于 .NET Core 来说,AOT 相对于 JIT 的优势,除了可以得到更小的程序之外,并不明显。

至于 Java/JVM,AOT 技术肯定也是有的,其相对原 JIT 方案,我觉得无论是启动速度还是内存占用上最应该都能有相当大的改善,因为现在的 Java 启动速度和内存占用实在是不忍直视。

java jit aot_对比JIT和AOT,各自有什么优点与缺点?相关推荐

  1. 对比JIT和AOT,各自的优点与缺点

    编译器和解释器是什么 编译器和解释器的区别在于是否编译和执行过程是否是同时进行. 编译器所干的事,将一门语言 X 编译为另一门语言 Y (可以是语言 X.高级语言.低级语言等),整个编译过程涉及词法分 ...

  2. 【java】Java即时编译(JIT)器原理解析及实践

    1.概述 转载:Java即时编译(JIT)器原理解析及实践 一.导读 常见的编译型语言如C++,通常会把代码直接编译成CPU所能理解的机器码来运行.而Java为了实现"一次编译,处处运行&q ...

  3. 【转载】Java之什么是JIT (Just In Time)?

    [转载]Java之什么是JIT (Just In Time)? JIT概念 JIT:Just In Time Compiler,一般翻译为即时编译器,这是是针对解释型语言而言的,而且并非虚拟机必须,是 ...

  4. 【Java】实战Java虚拟机之五“开启JIT编译”

    今天开始实战Java虚拟机之五"开启JIT编译" 总计有5个系列 实战Java虚拟机之一"堆溢出处理" 实战Java虚拟机之二"虚拟机的工作模式&qu ...

  5. java中的编译器是什么,java – JVM中的JIT编译器究竟是什么?

    我试图理解Java源代码是如何执行的,我对JVM内部的JIT编译器实际上是什么感到困惑.首先,让我告诉您我是如何理解从Java源代码到在计算机上执行机器代码的过程.也许,我误解了导致混乱的过程中的某些 ...

  6. Atitit。DD dragdrop拖拽功能c#.net java swing的对比与实现总结

    Atitit.D&D drag&drop拖拽功能c#.net java swing的对比与实现总结 1. 实现一个D&D操作一般包括三个步骤: 1 2. .net黑头的拖曳机制 ...

  7. java锁性能对比_提高Java的锁性能

    java锁性能对比 Plumbr是唯一可以通过解释应用程序性能数据来自动检测Java性能问题根本原因的解决方案. 几个月前,我们在Plumbr中引入了锁定线程检测之后,我们开始收到类似于"嘿 ...

  8. 对比java和python对比

    1.难易度而言.python远远简单于java. 2.开发速度.Python远优于java 3.运行速度.java远优于标准python,pypy和cython可以追赶java,但是两者都没有成熟到可 ...

  9. Java开源工作流对比

    Java开源工作流对比 工作流(Workflow) 1.业务过程的部分或整体在计算机应用环境下的自动化: 2.是对工作流程及其各步骤之间业务规则的抽象.概括描述: 3.工作流主要解决的问题是:为了实现 ...

最新文章

  1. 【JDK源码】Iterator与Iterable的实现与区别
  2. java map 教程_Java Map接口
  3. Android studio的布局总结
  4. 高可用性HA及Cluster集群
  5. linux system V IPC 信号灯和共享内存实例
  6. mfc之CPtrArray数组
  7. 数据库操作 linq php,.NET_asp.net使用LINQ to SQL连接数据库及SQL操作语句用法分析,本文实例讲述了asp.net使用LINQ t - phpStudy...
  8. 机器学习笔记(1)决策树
  9. 虚拟机专用win7系统_手机上运行win系统!不是远程桌面!
  10. Andriod7.0之wifi开启流程(含流程框图及流程图)
  11. 雷曼 疯狂兔子 java_《雷曼:疯狂兔子》详细流程攻略+个人心得分享
  12. React全家桶详细讲解-图文并茂
  13. 我的书进驻美国 amazon.com 、 ebay.com
  14. 基于BK蓝牙RW-BLE协议栈调度逻辑梳理
  15. boost库的安装和使用
  16. Haskell语言学习笔记(41)Parsec(1)
  17. ifconfig命令用法举例
  18. 计算机桌面变色怎么办,电脑屏幕变色了怎么办?电脑屏幕变色的六大原因及解决办法...
  19. 2020-2021 ICPC Southeastern European Regional Programming Contest (SEERC 2020)
  20. 以前接触的两个App中总结的知识

热门文章

  1. [曾贤志]Power Query简单得不像话的数据处理功能-曾贤志-专题视频课程
  2. 四足机器人--腿部机械结构设计
  3. php企业微信付款到零钱,企业付款到零钱功能介绍及常见问题
  4. 增长渠道价值衡量,LTV与CAC
  5. 大专文凭,考过软考的软件工程师,接着想进千人工程
  6. c盘gnway是什么文件_壹拓网科技详解金万维天联标准版软件下载安装登录流程
  7. 很好看的后台管理界面
  8. Winbox报错Could not connect to [MAC] (port 20561) - timed out!【已解决】
  9. java websphere_将Java Web 应用部署至 WebSphere 7
  10. 全国农村固定观察点调查体系是1984年经中共中央书记处批准建立的,于1986年正式运行至今。全国农村固定观察点调查统计制度根据《中华人民共和国统计法》的有关规定制定,由国家统计局正式批准实施。目前,本