C#常见术语表格

AOT

AOT 编译器也将 IL 代码翻译成机器代码。但与 JIT 编译不同的是,AOT 编译发生在应用程序执行之前,通常在不同的机器上进行。由于 AOT 工具链不在运行时进行编译,因此
无需最小化编译时间,可以投入更多时间进行优化。由于 AOT 的上下文是整个应用程序,AOT 编译器还会执行跨模块链接和全程序分析,这意味着它会跟踪所有引用并生成单个可执行文件。

JIT

AOT 类似,JIT 编译器将IL 代码翻译成处理器能够理解的机器代码。但与 AOT 不同的是,JIT 编译是按需进行的,并且在代码运行的同一台机器上执行。由于 JIT 编译发生在应用程序执行期间,因此编译时间也包含在运行时时间中。所以,JIT 编译器必须权衡代码优化所花费的时间与最终代码带来的性能提升。但 JIT 编译器了解实际的硬件情况,可以让开发人员免于发布不同的实现版本。

IL

什么是 “中间语言(IL)”? 它是用高级 .NET 语言编写的代码编译的产物。编写其中一种语言编写的代码后,将会收到一个由 IL 编写的二进制文件。

值得注意的是,IL 独立于运行在运行时(Runtime)之上的任何特定语言;它甚至拥有一套独立的规范。

从高级代码生成 IL 后,如果要运行它,CLR 会接管工作,启动实时编译(JIT)编译过程,或者将代码从 IL 实时编译成真正可以在 CPU 上运行的机器码。这样,CLR 就能确切知道代码的作用,并有效管理代码。

CLR

是什么

.Net 的运行时环境,类似于 Java 的 JVM

做什么

  • JIT 编译
  • 内存管理
  • 类型系统
  • 异常处理
  • 安全校验

CLR 实现有哪些实现

  1. CoreClr
    • 微软官方的 CLR 实现
    • .Net 6/7/8/9 的核心运行时
  2. Mono
    • 早期第三方 CLR 实现
    • 后被微软收购
    • 现在是 .Net 官方运行时之一
  3. .Net Framework CLR
    • 仅支持 Windows 平台
    • 仅维护

Mono

Mono是一个由Xamarin公司(先前是Novell,最早为Ximian)所主持的自由开放源码项目。该项目的目标是创建一系列符合ECMA标准(Ecma-334[1]和Ecma-335[2])的.NET工具,包括C #编译器和通用语言架构 。与微软的.NET Framework(共通语言执行平台)不同,Mono项目不仅可以运行于Windows系统上,还可以运行于Linux、FreeBSD、Unix、OS X和Solaris,甚至一些游戏平台

Mono 由几个组件组成:

C#编译器 - Mono 的 C#编译器支持 C#1.0、2.0、3.0、4.0、5.0 和 6.0(ECMA)。各种版本的 C#编译器的特性描述可以在维基百科上找到。

Mono Runtime - 运行时实现了 ECMA 共同语言基础结构 (CLI)。运行时提供即时编译器、提前编译器 (AOT)、库装载器、垃圾收集器、线程系统和互操作性功能。

.NET Framework 类库 - Mono 平台提供了一系列全面的类,为构建应用程序提供坚实的基础。这些类与 Microsoft 的 .NET Framework 类相容。

Mono Class Library - Mono 还提供了许多类,这些类超越了 Microsoft 提供的基类库。这些类提供了额外的有用功能,尤其是在构建 Linux 应用程序时。一些示例包括 Gtk+、Zip 文件、LDAP、OpenGL、Cairo、POSIX 等类。

跨平台 ios

iOS 和 Mac Catalyst 上的 Mono 解释器 - .NET MAUI | Microsoft Learn

Il2cpp

严格意义上来说,IL2CPCPP 是 Unity 引擎中的一个脚本后端选项,而不是 C# 本身的一个术语, 它已经脱离了 .Net 生态。

IL2CPP(中间语言到 C++)是 Unity 的自定义、提前编译(AOT)脚本后端,最初是为 iOS 等不支持 即时编译(JIT)的平台开发的。 IL2CPP 将 IL( 中间语言 )转换为 C++,并将其编译成特定于平台的原生代码,然后以目标平台的标准格式打包到应用程序中,例如 APK /AAB、iOS 应用程序包或 Windows 可执行文件和 DLL。

IL2CPP 支持所有平台,并且可以提供比 Mono 脚本后端的几个好处,包括性能提升和启动时间缩短。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值