一:

有人问:.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的性能,谁更高呢?的更多相关文章

  1. AOT和JIT以及混合编译的区别、优劣

    AOT,JIT是什么? JIT,即Just-in-time,动态(即时)编译,边运行边编译: AOT,Ahead Of Time,指运行前编译,是两种程序的编译方式 区别 这两种编译方式的主要区别在于 ...

  2. .Net8的快速JIT,分层编译,R2R的设置

    前言 本篇通过一些简单的JIT设置,比如快速JIT,适用于循环的快速 JIT,分层编译,R2R等核心内容设置,快速进入.Net8核心区域. 概括 1.快速JIT 什么是快速JIT,顾名思义,被Rosy ...

  3. angular2的编译模式之AOT和JIT

    原文 https://www.jianshu.com/p/c959d90e91ce 大纲 1.angular应用为什么需要编译 2.angular的编译模式类型 3.JIT(Just-In-Time) ...

  4. 一种更高查询性能的列存储方式MaxMinT 第一部分

    简介本文描述了一种列存储方式和对应的查询方法,这种存储方式具有更好的查询性能和更小的存储空间. And查询 本文先用直观的图形方式展示and查询时的方式,这也是算法要解决的问题核心.通常在OLAP数据 ...

  5. 腾讯云VS AWS :云存储网关性能谁更优?

    p { text-indent: 2em }    随着企业规模的扩大及业务的扩展,现有IT基础设施特别是存储设备无法满足爆炸性的数据增长,企业 IT 部门为了解决该问题,往往面临市场上多种存储产品及 ...

  6. Clear Linux 为脚本语言提供更高的性能

    导读 Clear Linux的领先性能不仅限于C/C++应用程序,而且PHP,R和Python等脚本语言也有很大的提升速度.在一篇新的博客文章中,英特尔的一位开发人员概述了他们对Python的一些性能 ...

  7. 译:ORCFILE IN HDP 2:更好的压缩,更高的性能

    原文地址: https://hortonworks.com/blog/orcfile-in-hdp-2-better-compression-better-performance/ ORCFILE I ...

  8. graphicview和widgets没本质区别。它只是更轻量级,更灵活,性能更高的widgets

    graphicview和widgets没本质区别.它只是更轻量级,更灵活,性能更高的widgets.核心就是把widgets变成了更轻量级的graphicitem,把QWidget的各种事件转换成了g ...

  9. SqlHelper发布——比你期望的还要多的多(例如比MyBatis-Pagehelper性能更高)

    SqlHelper发布——比Mybatis-PageHelper性能更高 起源 前段时间开启了一个新的项目,在选择分页插件时,发现github上很流行的一个是pagehelper,在百度上搜索了一下, ...

  10. 移动Web—CSS为Retina屏幕替换更高质量的图片

    来源:互联网 作者:佚名 时间:12-24 10:37:45 [大 中 小] 点评:Retian似乎是屏幕显示的一种趋势,这也是Web设计师面对的一个新挑战;移动应用程序的设计师们已经学会了如何为Re ...

随机推荐

  1. 实现在Qt窗口中嵌套SDL

    实现在Qt窗口中嵌套SDL 在现代软件开发中,多媒体处理和交互性成为应用程序不可或缺的一部分.Qt作为一个强大的GUI框架,为开发者提供了丰富的图形.界面和事件处理工具.然而,有时候,我们可能需要更多 ...

  2. shell编程之存储读写测试实战脚本

    Shell编程是一种在命令行环境中编写程序的技术,常用于Linux和Unix系统.它主要使用Shell脚本语言来编写程序.Shell编程常用于系统管理.自动化任务.批处理等领域. 常用的Shell脚本 ...

  3. 数据库中limit 和 offset 使用区别

    题:查找最晚入职员工的所有信息 1,SELECT * FROM employees ORDER BY hire_date DESC LIMIT 0,1; 解:对列hire_date分组后升序,从下标( ...

  4. 细聊C# AsyncLocal如何在异步间进行数据流转

    前言 在异步编程中,处理异步操作之间的数据流转是一个比较常用的操作.C#异步编程提供了一个强大的工具来解决这个问题,那就是AsyncLocal.它是一个线程本地存储的机制,可以在异步操作之间传递数据. ...

  5. 探索ChatGPT的Fine-tuning和Embeddings

    1.概述 今天我们将深入探索ChatGPT的两项核心技术:Fine-tuning(微调)和Embeddings(嵌入).这些技术在现代自然语言处理领域扮演着至关重要的角色,为模型的性能提升和适应特定任 ...

  6. Java爬虫实战系列——常用的Java网络爬虫库

    常用的Java网络爬虫库 Java 开发语言是业界使用最广泛的开发语言之一,在互联网从业者中具有广泛的使用者,Java 网络爬虫可以帮助 Java 开发人员以快速.简单但广泛的方式为各种目的抓取数据. ...

  7. OptiX8入门(一)optixHello

    本人初学者,如有错误和更好的表述,请指出 环境:CLion+VS2022+CUDA Toolkit 12.0.1+OptiX8 下载好后打开SDK就可以看到OptiX官方提供的许多例子,CMake配置 ...

  8. cpu分布式训练论文阅读

    Large Scale Distributed Deep Networks Downpour SGD: 模型的副本采用异步方式从参数服务器(Parameter Server)中获取参数w和上传Δw到参 ...

  9. 你准备好了吗,9月19日Java21要来了

    前言 9月份的TIOBE编程语言榜单已公布,Python依然是第一,Java第四. 而这个月还有一个重要的事情,就是9月19日Java21将会全面发布,一段时间没关注的我一口老血喷在屏幕上. 我记得我 ...

  10. Springboot实现注解判断权限

    Springboot实现注解判断权限 今天记录一下使用springboot的注解来给方法加权限 避免了每个方法都需要大量的权限判断 超级好用√ @ 目录 Springboot实现注解判断权限 1.创建 ...