AOT概述

11.1、AOT概述

11.1.1、JIT与AOT的区别

JIT和AOT 这个名词是指两种不同的编译方式,这两种编译方式的主要区别在于是否在“运行时”进行编译

(1)JIT, Just-in-time,动态(即时)编译,边运行边编译;

在程序运行时,根据算法计算出热点代码,然后进行 JIT 实时编译,这种方式吞吐量高,有运行时性能加成,可以跑得更快,并可以做到动态生成代码等,但是相对启动速度较慢,并需要一定时间和调用频率才能触发 JIT 的分层机制。JIT 缺点就是编译需要占用运行时资源,会导致进程卡顿。

(2)AOT,Ahead Of Time,指运行前编译,预先编译。

AOT 编译能直接将源代码转化为机器码,内存占用低,启动速度快,可以无需 runtime 运行,直接将 runtime 静态链接至最终的程序中,但是无运行时性能加成,不能根据程序运行情况做进一步的优化,AOT 缺点就是在程序运行前编译会使程序安装的时间增加。

简单来讲:JIT即时编译指的是在程序的运行过程中,将字节码转换为可在硬件上直接运行的机器码,并部署至托管环境中的过程。而 AOT 编译指的则是,在程序运行之前,便将字节码转换为机器码的过程。

.java -> .class -> (使用jaotc编译工具) -> .so(程序函数库,即编译好的可以供其他程序使用的代码和数据)

 

(3)AOT的优点

简单来讲,Java 虚拟机加载已经预编译成二进制库,可以直接执行。不必等待及时编译器的预热,减少 Java 应用给人带来“第一次运行慢” 的不良体验。

在程序运行前编译,可以避免在运行时的编译性能消耗和内存消耗 可以在程序运行初期就达到最高性能,程序启动速度快 运行产物只有机器码,打包体积小

AOT的缺点

由于是静态提前编译,不能根据硬件情况或程序运行情况择优选择机器指令序列,理论峰值性能不如JIT 没有动态能力,同一份产物不能跨平台运行

第一种即时编译 (JIT) 是默认模式,Java Hotspot 虚拟机使用它在运行时将字节码转换为机器码。后者提前编译 (AOT)由新颖的 GraalVM 编译器支持,并允许在构建时将字节码直接静态编译为机器码。

现在正处于云原生,降本增效的时代,Java 相比于 Go、Rust 等其他编程语言非常大的弊端就是启动编译和启动进程非常慢,这对于根据实时计算资源,弹性扩缩容的云原生技术相冲突,Spring6 借助 AOT 技术在运行时内存占用低,启动速度快,逐渐的来满足 Java 在云原生时代的需求,对于大规模使用 Java 应用的商业公司可以考虑尽早调研使用 JDK17,通过云原生技术为公司实现降本增效。

11.1.2、Graalvm

Spring6 支持的 AOT 技术,这个 GraalVM 就是底层的支持,Spring 也对 GraalVM 本机映像提供了一流的支持。GraalVM 是一种高性能 JDK,旨在加速用 Java 和其他 JVM 语言编写的应用程序的执行,同时还为 JavaScript、Python 和许多其他流行语言提供运行时。 GraalVM 提供两种运行 Java 应用程序的方法:在 HotSpot JVM 上使用 Graal 即时 (JIT) 编译器或作为提前 (AOT) 编译的本机可执行文件。 GraalVM 的多语言能力使得在单个应用程序中混合多种编程语言成为可能,同时消除了外语调用成本。GraalVM 向 HotSpot Java 虚拟机添加了一个用 Java 编写的高级即时 (JIT) 优化编译器。

GraalVM 具有以下特性:

(1)一种高级优化编译器,它生成更快、更精简的代码,需要更少的计算资源

(2)AOT 本机图像编译提前将 Java 应用程序编译为本机二进制文件,立即启动,无需预热即可实现最高性能

(3)Polyglot 编程在单个应用程序中利用流行语言的最佳功能和库,无需额外开销

(4)高级工具在 Java 和多种语言中调试、监视、分析和优化资源消耗

总的来说对云原生的要求不算高短期内可以继续使用 2.7.X 的版本和 JDK8,不过 Spring 官方已经对 Spring6 进行了正式版发布。

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: AOT是Ahead Of Time的缩写,意为预编译。WinForm是Windows Forms的简称,是一种用于Windows桌面应用程序开发的基于.NET框架的用户界面库。而AOT WinForm则是指使用预编译技术来加快WinForm应用程序的启动和执行速度。 以常规的编译方式,.NET应用程序通常需要在运行时对字节码进行JIT编译,这将导致启动时间和执行速度较慢。然而,AOT可以在应用程序打包时将所有字节码预先编译成本地机器代码,从而在运行时直接执行,这大大提高了程序的性能和响应速度。 在使用AOT WinForm时,开发者可以选择对整个应用程序或者部分组件(如DLL或EXE文件)进行预编译。虽然AOT编译可能需要更长的时间和更多的计算资源来完成,但通过减少JIT编译的时间和避免因为JIT编译而产生的性能损失,AOT可以为应用程序带来显著的优化效果。 总的来说,AOT WinForm是一种非常有用的优化技术,它可以提升WinForm应用程序的性能和响应速度,尤其是在需要处理较大数据量和复杂逻辑的情况下。 ### 回答2: AO.T是一家致力于培训人工智能人才的公司,其开发的AO.T Winform是一款基于.NET Framework技术的窗体应用程序。WINFORM是WINDOWS FORMS的缩写,指的是Windows桌面应用程序。具有易于编写和使用、可多种控件设计和使用和可快速开发的特点,适用于各细分行业。AO.T Winform实现了窗口设计中各控件的灵活布局和操作,它可以简化Windows应用程序开发过程,同时通过提供免费的软件授权来降低企业的成本。 AO.T Winform支持在Windows上开发GUI应用程序,并且由于采用.NET技术,因此它可以使用C#或VB.NET等编程语言进行开发。它也提供了一系列的用户界面的控件和容器,比如TextBox文本框、Button按钮、Label标签、ComboBox下拉菜单、DataGridView表格控件以及各种面板和容器来帮助用户快速开发完整的应用程序。 AO.T Winform对于初学者来说是一款非常好的学习工具。学生可以用它来学习GUI编程、面向对象编程、事件驱动等技术,还可以通过练习来提高自己的编程能力,以及掌握多种常用的技巧,例如自定义控件和定制窗口等。 总之,AO.T Winform是一款灵活、易于使用、快速开发的GUI工具,可以帮助企业降低开发成本,还能够帮助学生快速掌握GUI编程,提高自己的编程水平。 ### 回答3: AOI(自动光学检查)技术在现代制造业中被广泛使用,可以帮助生产厂家在制造过程中快速准确地检查电路板的质量,提高生产效率和质量。AOI技术依赖于高精度的图像分析算法,需要可靠的软件平台来实现。 AOT WinForm是一款专门为AOI应用开发的图形用户界面(GUI)开发工具。它提供了多种开发组件、图形控件和功能模块,可以快速构建高效的AOI检测软件。使用AOT WinForm,开发者可以轻松地实现各种检测算法,包括PCB元器件安装检测、焊点检测、短路检测、开路检测、电路板外形检测等。与传统的手工检测方式相比,AOT WinForm可以大大提高检测速度和精度,降低生产成本和人力投入。 AOT WinForm具有以下优点: 1. 可视化的设计界面:AOT WinForm提供了友好的可视化设计界面,不需要编写复杂的代码就可以创建出漂亮的GUI界面,可以大大提高开发效率。 2. 高效的算法库:AOT WinForm内置了丰富的图像处理和算法库,包括常用的图像变换、边缘提取、滤波等算法,可以快速实现多种电路板检测功能。 3. 全面的支持:AOT WinForm支持多种数据接口和格式,可以与各种数据源集成,包括网络摄像头、CCD相机、扫描仪等。 4. 易于维护和升级:由于AOT WinForm使用标准的.NET框架和C#语言,因此易于维护和升级,开发者可以根据需要自由扩展和修改代码。 总之,AOT WinForm是一个高效、可靠的AOI开发工具,可以帮助电路板制造商提高生产效率和质量,加快新产品上市时间,降低生产成本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值