.NET JIT

news2025/7/18 8:46:16

定义

  • 即时编译器 (JIT) 是 .NET 中公共语言运行时 (CLR) 的一部分,它负责管理 .NET 程序的执行,而与任何 .NET 编程语言无关。

工作流

  • 特定于语言的编译器将源代码转换为中间语言。 然后,这种中间语言由即时 (JIT) 编译器转换为机器代码。 此机器代码特定于运行 JIT 编译器的计算机环境。
  • JIT 编译器将 Microsoft 中间语言 (MSIL) 或通用中间语言 (CIL) 转换为机器代码。 这是在执行 MSIL 或 CIL 之前完成的。 MSIL 根据要求转换为机器代码,即 JIT 编译器根据需要编译 MSIL 或 CIL,而不是全部编译。 存储已编译的 MSIL 或 CIL,以便在需要时可用于后续调用。
    JIT

即时编译器的类型

  • Pre-JIT Compiler:使用 Pre-JIT Compiler 在单个编译周期内将所有源代码同时编译成机器码。 此编译过程在应用程序部署时执行。 而且这个编译器总是在 Ngen.exe(Native Image Generator)中实现。
    在这里插入图片描述

  • 普通 JIT 编译器:运行时所需的源代码方法在它们第一次被普通 JIT 编译器调用时被编译成机器代码。 之后,它们将存储在缓存中,并在再次调用时使用。
    在这里插入图片描述

  • Econo JIT 编译器:运行时所需的源代码方法由 Econo JIT 编译器编译成机器代码。 在不再需要这些方法后,将它们删除。 从 dotnet 2.0 开始,此 JIT 编译器已过时。
    在这里插入图片描述


JIT编译器的优点

  • JIT 编译器需要较少的内存使用,因为只有运行时需要的方法由 JIT 编译器编译成机器代码。
  • 使用 JIT 编译器可以减少页面错误,因为一起需要的方法很可能在同一个内存页面中。
  • JIT 编译器可以在代码运行时执行基于统计分析的代码优化。

JIT编译器的缺点

  • 在最初执行应用程序时,JIT 编译器需要更多的启动时间。
  • JIT 编译器大量使用高速缓存来存储运行时所需的源代码方法。
  • JIT 编译器的许多缺点可以使用 Ahead-of-time (AOT) 编译来解决。 这涉及将 MSIL 编译成机器代码,这样就不需要运行时编译,并且机器代码文件可以本地执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/4739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一篇文章学会React

React基础 文章目录React基础React介绍React特点React基本使用安装使用React脚手架(***)生成的项目的目录结构src下的index.js入口文件介绍脚手架中使用ReactJSX什么是JSX产生原因介绍JSX概述JSX语法注意事项JSX语法原理JSX学习声明式渲染条件渲染循环渲…

YOLOX改进

这是yolox的第2季了 如何设计在 mAP 和延迟方面表现良好的单级轻量级检测器?新型的单阶段轻量检测器和各种操作的准确性和延迟。此基础上分别提出了GPU和CPU的最佳操作和架构。一份YOLOX改进的实验报告:如何设计性能优异的单阶段轻量级目标检测器 论文…

Android Studio App自定义控件中视图的构造和测量方法讲解及实战(附源码 实现下拉刷新功能 超详细必看)

需要全部源码或者图片集请点赞关注收藏后评论区留言~~~ 一、视图的构造方法 Android自带的控件往往外观欠佳,开发者常常需要修改某些属性,比如按钮控件Button就有好几个问题,其一字号太小,其二文字颜色太浅,其三字母默…

表白爱心代码

文章目录一、演示(python版)代码二、演示(html版)代码一、演示(python版) 代码 # 在等一句我愿意 import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH 640 # 画布的宽…

hive最近的学习汇总-20221110

下个项目可能要用hive比较多 之前对分区、分桶搞不明白 趁着最近又学习了一下 ps:之前说的prophet在年底前一定会放上来的 hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据&#xff1…

MySQL管理常用工具介绍

1.mysql 该mysql不是指mysql服务,而是指mysql的客户端工具。 -e选项可以在Mysql客户端执行SQL语句,而不用连接到MySQL数据库再执行,对于一些批处理脚本, 这种方式尤其方便。 示例: 2、 mysqladmin mysqladmin 是一个…

大三Web课程设计——悬崖上的波妞(4页) HTML+CSS(可以很好的应付老师的作业)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

Java基础系列(八)——线程池详解

目录 线程池详解 什么是线程池?为什么要用线程池? 如何创建线程池 ThreadPoolExecutor类分析 ThreadPoolExecutor 饱和策略 简单的线程池Demo ThreadPoolExecutor线程池新增线程流程 线程池详解 什么是线程池?为什么要用线程池&#…

Word2Vec原理以及实战详解

文章目录前言0、序言(词嵌入介绍)一、Word2vec详解。二、CBOW 和 Skip-Gram详解。2-1、CBOW模型:(已知周围词预测中心词)2-2、Skip-Gram模型(已知中心词预测周围词)2-3、词嵌入的缺点三、Word2vec实战(使用Gensim包&am…

[SQL]视图和权限

有时让用户看到整个基本表是不合适的,出于安全考虑,可能需要向用户隐藏特定的数据。如在instructor关系中隐藏工资值: select ID,name,dept_name from instructor;创建更符合特定用户直觉的个人化的关系集合,如学生成绩表由学生关…

一文学会JavaScript计时事件

文章目录JavaScript 计时事件setInterval() 方法clearInterval() 方法setTimeout() 方法clearTimeout() 方法JavaScript 计时事件 通过使用 JavaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时…

Linux--基础命令

一、Linux指令 mkdir(Make Directory):在当前路径下新建一个目录 -p --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录; ls(List…

Day796.什么是线程数据的强、弱一致性 -Java 性能调优实战

什么是线程数据的强、弱一致性 Hi,我是阿昌,今天学习记录的是关于什么是线程数据的强、弱一致性。 一致性,其实在系统的很多地方都存在数据一致性的相关问题。 除了在并发编程中保证共享变量数据的一致性之外,还有数据库的 ACI…

Autosar基本概念详细介绍

Autosar的由来 在汽车创新应用不断涌现的推动下,当代汽车电子电气(E/E—Electronic/Electrical)架构已经非常复杂,需要有创新的技术突破才能有效地进行管理,满足日益增长的乘客需求和法律要求。这个需求对汽车制造商及…

记一次简单的HTTP绕WAF

0X01 基础知识 关于WAF的问题? 它是我们日常攻防演练必会遇见的,在IOS七层模型中,WAF分为网络层、应用层的,当然还有云 WAF(CDNWAF)这新型类场景的。不同环境下我们绕过WAF的思路也是有所区别的&#xff…

mybatis单框架通用mapper使用(二)

mybatis单框架通用mapper使用(二) 1 查询 1.1 简单查询 1.1.1 查多条 a 用法 接口引用.select(实体类对象引用); //里面实体类对象,里面不为null值的部分就会作为条件被查询,多个条件使用and进行拼接起来 //传入为null就是查询全部的值b 测试代码 Testpublic void t2(){Sq…

直播带货系统源码,居家“神器”不出门就能购物

如今,直播带货的火爆程度已经超出了人们的想象。线下销售行业的卖家也开启了直播带货模式,直播带货的的火爆归根到底还是消费者的购物方式发生的变化。从传统的线下购物到电商购物,再到今天的直接直播带货。从各大数据可以总结,消…

应用密码学期末速通复习

文章目录模运算分数求模负数求模gcd最大公约数逆元分组密码DES加密AES加密操作模式ECB电子密码本CBC分组链接CFB密码反馈OFB输出反馈序列密码A5-1算法RC4算法Hash函数Md5算法SHA-1算法消息认证数字信封公钥密码背包公钥算法RSA公钥算法Rabin公钥算法ElGamal公钥算法ECC公钥算法…

C/C++刷题DAY2

1.第一题 27. 移除元素 - 力扣(LeetCode) 分析:对于此题,我们使用双指针的方式去写它,需要注意空间复杂度是O(1),时间复杂度也是尽量的越低越好,要去需要原地修改数组&a…

Matplotlib设置刻度和刻度标签

Matplotlib在我们之前的所有例子中都自动接管了轴上间隔点的任务。Matplotlib的默认刻度定位器和格式化器在很多常见情况下通常都足够了。可以明确提及刻度线的位置和标签以满足特定要求。 xticks()和yticks()函数将列表对象作为参数。列表中的元素表示将显示刻度的相应操作的位…