.NET8 AOT和JIT的性能,谁更高呢?
一:
有人问:.NET8 AOT和JIT的性能,谁更高呢?
原文:.NET8 AOT和JIT的性能,谁更高呢?
其实这个答案非常明显,那就是JIT的性能更高。为什么?原因在哪?因为JIT是随时可能分层编译,动态PGO,CHRL,Non GC Heap,OSR。Quick等极致的优化措施(关于这些措施,可以参考公众号(jianghupt)之前的文章,有详细描述)。只要触发了这些优化的条件。
但是AOT就不一样了,它从一开始就被ILC编译成了二进制的原生代码,只要是被编译成了独立的可执行文件,它的二进制代码就不会再次被优化了。只能是第一次生成的结果,一直不停地运行。
也就是说AOT的代码不能进行运行时候的最大化的优化,但是JIT可以,而且持续性的极端优化,所以JIT的性能无疑是远远高于AOT的。
二:
既然JIT如此强悍,那么AOT的存在有何意义呢?
首先独立的可执行文件是AOT的一大特色,也就是不带任何的动态链接库,单个的可执行文件运行在任何.NET支持的平台上面,清爽,干净,而且可移植性强。其次AOT虽然性能上比之JIT有差距,但是它第一次启动是要高于JIT的。也就是说AOT的性能并不是拉胯,而是折中 了。这其实跟两者的原理有关,AOT因为被编译成了原生的二进制代码,直接在相应的平台上运行,类似于系统级语言的代码比如C/C++这种,所以它编译好了之后,第一次运行的速度是比较快的。但是JIT就不同了,因为JIT第一次运行是遵循一个原则,即是快速的把MSIL编译成机器码,而尽可能最小化的优化。所以JIT的第一次运行性能是很成问题的。但是随着时间推移,多次运行某个函数,或者多次调用程序某个功能,JIT的优势就发挥出来了。赶上以至于超越了AOT。
三:
原文:.NET8 AOT和JIT的性能,谁更高呢?
对此,你有什么看法呢?可以下方留言讨论下
欢迎加入C#12/.NET8技术交流群
.NET8 AOT和JIT的性能,谁更高呢?的更多相关文章
- AOT和JIT以及混合编译的区别、优劣
AOT,JIT是什么? JIT,即Just-in-time,动态(即时)编译,边运行边编译: AOT,Ahead Of Time,指运行前编译,是两种程序的编译方式 区别 这两种编译方式的主要区别在于 ...
- .Net8的快速JIT,分层编译,R2R的设置
前言 本篇通过一些简单的JIT设置,比如快速JIT,适用于循环的快速 JIT,分层编译,R2R等核心内容设置,快速进入.Net8核心区域. 概括 1.快速JIT 什么是快速JIT,顾名思义,被Rosy ...
- angular2的编译模式之AOT和JIT
原文 https://www.jianshu.com/p/c959d90e91ce 大纲 1.angular应用为什么需要编译 2.angular的编译模式类型 3.JIT(Just-In-Time) ...
- 一种更高查询性能的列存储方式MaxMinT 第一部分
简介本文描述了一种列存储方式和对应的查询方法,这种存储方式具有更好的查询性能和更小的存储空间. And查询 本文先用直观的图形方式展示and查询时的方式,这也是算法要解决的问题核心.通常在OLAP数据 ...
- 腾讯云VS AWS :云存储网关性能谁更优?
p { text-indent: 2em } 随着企业规模的扩大及业务的扩展,现有IT基础设施特别是存储设备无法满足爆炸性的数据增长,企业 IT 部门为了解决该问题,往往面临市场上多种存储产品及 ...
- Clear Linux 为脚本语言提供更高的性能
导读 Clear Linux的领先性能不仅限于C/C++应用程序,而且PHP,R和Python等脚本语言也有很大的提升速度.在一篇新的博客文章中,英特尔的一位开发人员概述了他们对Python的一些性能 ...
- 译:ORCFILE IN HDP 2:更好的压缩,更高的性能
原文地址: https://hortonworks.com/blog/orcfile-in-hdp-2-better-compression-better-performance/ ORCFILE I ...
- graphicview和widgets没本质区别。它只是更轻量级,更灵活,性能更高的widgets
graphicview和widgets没本质区别.它只是更轻量级,更灵活,性能更高的widgets.核心就是把widgets变成了更轻量级的graphicitem,把QWidget的各种事件转换成了g ...
- SqlHelper发布——比你期望的还要多的多(例如比MyBatis-Pagehelper性能更高)
SqlHelper发布——比Mybatis-PageHelper性能更高 起源 前段时间开启了一个新的项目,在选择分页插件时,发现github上很流行的一个是pagehelper,在百度上搜索了一下, ...
- 移动Web—CSS为Retina屏幕替换更高质量的图片
来源:互联网 作者:佚名 时间:12-24 10:37:45 [大 中 小] 点评:Retian似乎是屏幕显示的一种趋势,这也是Web设计师面对的一个新挑战;移动应用程序的设计师们已经学会了如何为Re ...
随机推荐
- android webview调用js(vue)问题记录
这几天和别人对接移动端,安卓平台,我们这边输出vue界面,安卓方反馈轮询的时候调用不到,具体原因也定位不到,只能确定前端这边没几句代码,应该没有问题,因此决定自己下载个android studio写个 ...
- MATLAB入门小操作(数据类型)
这是一篇有助于快速上手MATLAB软件的文章(新手向).(学习过其他的语言更容易看懂) 数据类型 这篇文章我想从MATLAB中的数据类型出发去列举一些经常使用的操作.MATLAB中的数据类型包括其他语 ...
- 聊一聊使用Spring事物时不生效的场景
前言 今天介绍一下Spring事物不生效的场景,事物是我们在项目中经常使用的,如果是Java的话,基本上都使用Spring的事物,不过Spring的事物如果使用不当,那么就会导致事物失效或者不回滚,最 ...
- MySQL中的Statistics等待
[作者] 吴宙旭,携程数据库专家 [问题描述] 线上我们偶尔会碰到MySQL的状态是statistics. 但如果出现大量的statistics等待,会引起MySQL性能急剧下降.官方的文档对这个状态 ...
- RCU的简单认识
RCU RUC是什么? RCU(Read-Copy-Update)是一种用于并发编程的技术,旨在提供高效且无锁(lock-free)的读操作,同时保证数据一致性和并发性. 也就是说他并不需要锁的机制来 ...
- How can I access GPT-4?
How can I access GPT-4? Written by Joshua J.. Updated over a week ago API Access Most users will n ...
- MySQL PXC集群大事务提交超限
研发人员在测试大事务提交时遇见了错误: Got error 5 - 'Transaction size exceed set threshold' during COMMIT 测试了几次都是1200S ...
- bootstrap响应式原理
Bootstrap 框架的网格系统工作原理如下:1 .数据行 (.row) 必须包含在容器( .container )中,以便为其赋予合适的对齐方式和内距 (padding) . 如: <div ...
- Istio 入门(七):出入口网关 - 负载均衡和熔断等一系列功能
本教程已加入 Istio 系列:https://istio.whuanle.cn 目录 5,出入口网关 istio-ingressgateway 部署服务 配置 Gateway 子版本 istio-e ...
- java 创建对象的5种方式
1.创建对象的5种方式 1.通过 new 关键字 这是最常用的一种方式,通过 new 关键字调用类的有参或无参构造方法来创建对象.比如 Object obj = new Object(); 2.通过 ...