当前位置: 首页 > article >正文

JIT 与 AOT 编译区别

注本文为 “JIT 与 AOT ” 相关合辑。英文引文机翻未校。中文引文未整理去重。图片清晰度受引文原图所限。如有内容异常请看原文。JIT 与 AOT 区别1 基本概念与典型实例JIT (Just-In-Time)即时编译程序运行过程中动态完成编译。典型实现Android 平台的 Dalvik 虚拟机。AOT (Ahead-Of-Time)预先编译程序执行前全部完成编译。典型实现Android 平台的 ART (Android Runtime)。2 PGO 优化流程与实现差异2.1 PGO 基本原理PGOProfile-Guided Optimizations剖面引导优化通过采集程序运行时的行为数据指导编译器实施针对性优化从而改变指令布局、提升分支预测精度、调整内联策略等进而改变程序运行效率。2.2 AOT 环境下的 PGO 流程AOT 实现 PGO 通常采用多阶段编译模式仪器编译阶段编译器在程序中插入数据采集指令生成带采集逻辑的可执行文件。剖面采集阶段程序在测试环境或仿真环境中运行执行典型业务流程记录分支跳转频率、函数调用频次、循环迭代次数等运行时信息。优化重编译阶段编译器读取采集到的剖面数据对程序进行二次编译应用基于剖面的优化策略。部署阶段使用二次编译后的优化版本对外提供服务。该流程需要多次编译与环境部署整体周期较长且依赖代表性运行数据工程部署成本较高。2.3 JIT 环境下的 PGO 流程JIT 依托运行时环境天然具备剖面采集能力流程更为简洁解释/低阶编译阶段程序以解释模式或低优化等级编译模式运行同时无侵入采集分支、调用、热点等运行时信息。实时分析阶段运行时环境持续统计函数调用热度、分支概率、类型分布等数据。动态编译优化当函数或代码块达到触发阈值时JIT 编译器依据已有剖面信息实施高等级优化生成优化后的机器码并替换原有执行逻辑。持续自适应优化程序运行过程中可持续采集新信息对已有机器码进行重新编译与优化。JIT 环境下 PGO 无需额外编译阶段与离线部署流程可在程序正常运行过程中完成适合实际生产环境使用。3 JIT 相对 AOT 的其他优势3.1 跨边界的 LTO 能力传统 AOT 优化以编译单元为界限LTO 可在链接阶段实施跨编译单元优化。动态链接库会形成优化边界动态符号无法被内联与深度优化。JIT 环境下动态加载、动态生成的代码均参与统一优化不依赖全量静态链接可实现跨模块的全局优化。3.2 运行时环境感知优化JIT 在程序运行阶段执行编译可获取目标设备的硬件配置、指令集支持情况、运行时配置等信息。这些信息可作为编译期常量参与优化生成与当前环境匹配的机器码。3.3 编译与运行时融合的计算能力JIT 语言中编译阶段与运行阶段无严格分界编译与执行可交替进行。程序可在运行时使用完整语言功能完成计算与代码生成相关计算开销仅体现在启动阶段对稳定运行阶段的性能表现不产生影响。3.4 运行时热更新支持JIT 可支持 HotSwap 类运行时函数替换能力。当函数实现发生变更时JIT 可废弃依赖该函数的优化代码并基于新实现重新编译与优化。AOT 环境下此类操作会破坏既有优化结构实现条件受限。3.5 动态类型与泛型特化优化JIT 可根据运行时实际类型信息实施类型特化优化对泛型代码、动态调用场景进行针对性优化减少虚调用与类型检查开销提升执行效率。4 AOT 相对 JIT 的优势4.1 程序启动耗时更短JIT 需要在运行时完成编译与优化程序需要经过预热阶段才能达到稳定性能。AOT 不包含运行时编译步骤启动后可直接进入执行状态。4.2 运行时内存占用更低JIT 需要分配内存用于存储剖面数据、编译缓存与中间表示。AOT 运行阶段不保留编译相关数据内存占用更低。4.3 复杂编译优化的支持AOT 编译为离线过程可使用更高复杂度的分析与优化算法通过更长编译时间换取执行效率。JIT 受限于运行时响应速度通常简化部分优化策略。4.4 程序逆向分析难度更高JIT 输入多为高级中间表示包含较多结构信息。AOT 直接编译为机器码语言级结构保留较少逆向分析难度更高。5 技术演进与混合优化方案传统 JIT 与 AOT 的性能边界并非固定现有技术可对二者进行补偿Graal 编译器在 AOT 阶段通过预训练模型推导剖面信息模拟 PGO 效果。JIT 通过缓存剖面与编译结果、提前执行部分计算缩短预热时间。Azul Cloud Native Compiler 将 JIT 服务部署至独立节点共享剖面与优化结果降低重复编译开销。6 Java 平台 AOT 编译器实现桌面环境下Java 存在可替代 JIT 的 AOT 编译工具GraalVM AOT 编译器可将 Java 代码编译为平台原生机器码。jaotcJDK 9 及后续版本内置的 AOT 编译器实现基于 Graal 技术栈。7 典型平台性能数据以 .NET Core 为例未启用 AOT 的 ASP.NET Core 应用冷启动耗时约 150 msJIT 可在运行中持续优化并对高频泛型类型进行特化处理。采用 ReadyToRun 混合编译模式初始化逻辑通过 AOT 优化启动耗时可降至约 80 ms。经 CoreRT 全量 AOT 编译后程序启动耗时可低于 10 ms适用于 AWS Lambda 等函数计算场景。全量 AOT 会限制表达式树动态生成 IL 等特性在 .NET Core 生态中除体积与启动速度需求外AOT 相对 JIT 的优势并不明显。8 AI 框架中的 JIT 与 AOT 应用8.1 AOT 应用场景AOT 适用于移动端与嵌入式深度学习部署形式包括推理引擎训练阶段完成模型固化推理阶段直接加载预编译模型结构。静态图生成通过 AI 编译器将网络模型转换为统一 IR 表示运行阶段执行预编译结果。代表框架TensorFlow、MLIR 相关工具链。8.2 JIT 应用场景JIT 实现动态编译与实时优化适用于动态网络结构与快速迭代开发PyTorch 2.X Inductor将 Python 代码实时编译为原生机器码。计图 (Jittor)基于元算子与统一计算图通过 JIT 实现自动优化与硬件适配。9 性能与工程性总结JIT峰值吞吐表现更高支持动态代码生成、热更新与自适应硬件优化程序启动速度较慢运行时存在额外资源开销。AOT启动速度快内存占用低可执行深度离线优化程序逆向难度更高不支持运行时动态剖面优化动态特性支持受限。理论层面AOT 拥有更充足的编译时间与优化空间可生成更高效的机器码。工程实践中JIT 生态迭代速度更快对动态环境与运行时信息的利用更充分综合性能表现优于传统 AOT 实现。云原生与 Serverless 场景对启动速度存在要求AOT 编译方案被广泛采用长期运行的服务端场景更侧重峰值性能JIT 优化方案具备更高适用性。AOT 与 JIT 编译部署环境决定机器学习模型由高级计算图转换为可执行机器码的时机与方式。编译时机构成即时编译与提前编译的区分条件。对该差异的分析可支撑模型在特定场景下的优化包括边缘设备低延迟推理与云集群高吞吐量训练等场景。编译时间线AOT 与 JIT 的差异体现在编译流程相对于应用运行阶段的执行时序。在提前AOT流程中编译过程以离线方式完成。模型训练结束后模型定义作为输入经由编译工具链处理生成独立二进制文件或库文件。该文件包含模型运行所需的优化后机器码不包含编译组件。运行阶段应用加载并执行该二进制文件即可完成计算。在即时JIT流程中编译过程在程序运行阶段动态执行。PyTorch、JAX 等框架对程序执行进行监控。模型或函数首次被调用时JIT 编译器捕获计算图执行优化流程并生成机器码。生成的代码被缓存并参与执行。后续调用直接使用缓存内核不再重复编译。下图展示两类流程的结构差异。AOT 工作流 JIT 工作流 模型定义 编译器栈离线 二进制产物 运行时执行 Python 脚本 首次执行 编译器栈运行时 快速执行 后续调用 代码缓存AOT 与 JIT 工作流对比。AOT 模式下编译器在部署前执行一次。JIT 模式下编译器作为执行流程的组成部分。即时JIT编译JIT 编译广泛应用于模型研究与训练阶段可保留程序执行的灵活性。torch.compile、XLA 等工具可在不脱离 Python 执行环境的前提下完成算子融合与执行优化。JIT 编译存在预热开销。数据首次进入模型时系统执行图编译操作延迟指标显著上升。JIT 编译函数的执行过程包含输入张量形状分析、计算流程追踪、优化策略应用与 GPU 内核生成。若后续调用中输入形状发生变动JIT 编译器可触发重新编译生成适配新维度的优化内核。JIT 的优点1.易用性可与 Python 控制流协同工作。编译阶段前可使用标准 Python 调试工具。2.动态优化编译器在运行阶段获取张量形状与数据类型信息可生成对应场景的专用代码。JIT 的缺点运行时开销编译相关组件需部署于生产环境会提升内存占用与依赖体积。延迟波动新执行路径或张量形状变化可触发重新编译造成请求延迟波动。提前AOT编译AOT 编译将机器学习模型按照 C 程序的方式处理生成依赖最小运行时的专用可执行文件不依赖完整训练框架。该方式适用于移动设备、嵌入式系统与 FPGA 等专用加速硬件的部署场景。AOT 流程通常要求输入静态形状或为动态维度设定明确边界。编译器执行多阶段分析预先确定内存需求实现静态内存分配降低运行阶段动态内存管理带来的开销。AOT 的优点性能稳定性全部编译工作在部署前完成运行阶段无额外编译行为推理延迟保持稳定。可移植性输出产物多为共享库.so或.dll可在 C、C、Java、Rust 环境中调用目标环境无需配置 Python 或 PyTorch。硬件执行效率编译阶段可执行高复杂度优化策略编译耗时不影响终端用户体验。AOT 的缺点灵活性受限模型计算图需保持静态结构。基于张量数据的动态控制流难以直接适配通常需要对模型结构进行修改。工具链配置复杂交叉编译环境的搭建会提升构建流程复杂度例如在 x86 服务器上为 ARM 架构移动设备编译代码。性能比较通过多轮推理请求的执行时间可直观体现两类编译策略的差异。下图对标准解释器、JIT 编译器与 AOT 编译模型的延迟表现进行对比。10 轮运行延迟对比。JIT 存在由编译开销带来的初始峰值后续性能优于解释器。AOT 自首次运行起维持稳定低延迟。策略选择AOT 与 JIT 的选择不取决于单一编译速度指标现代编译器对两类模式通常采用相同的底层优化流程。方案选择依据部署环境约束确定。JIT 适用场景研究与实验阶段内存与计算资源充足的环境如云服务器模型依赖大量动态 Python 特性或输入形状存在变动AOT 适用场景资源受限的边缘设备部署场景如移动设备、物联网终端对启动延迟存在严格要求的场景模型需集成至无 Python 运行时的 C 应用程序两类编译流程生成的中间表示IR。编译器均将计算图转换为 IR 形式以完成后续优化与代码生成工作。计算图、中间表示及其应用1 计算图1.1 定义计算图Computational Graph是表示数值计算过程的有向图结构用于描述运算、数据及其依赖关系。计算图通常表现为有向无环图DAG, Directed Acyclic Graph**是机器学习框架对模型逻辑的统一抽象形式。1.2 基本组成节点Node分为两类数据节点表示张量、矩阵、标量、变量、常量等数据对象。运算节点表示算子操作如加法、乘法、矩阵乘法、卷积、归一化、激活函数等。有向边Edge表示数据流动方向与数据依赖关系决定计算执行顺序。1.3 基本特征计算顺序由拓扑序确定不存在循环依赖。完整记录从输入到输出的所有计算步骤。与高级语言Python及框架PyTorch、TensorFlow、JAX强相关。2 计算图转换为 IR 形式2.1 IR 的定义中间表示Intermediate Representation, IR是编译器内部使用的与硬件、框架无关的标准化表示形式位于高层计算图与底层机器码之间是编译优化的主要载体。2.2 转换过程计算图转换为 IR是将高层、框架相关的计算逻辑翻译为统一、结构化、可优化的中间形式的过程主要步骤如下计算图遍历与解析提取算子类型、张量形状、数据类型、控制流、数据依赖等信息。语义归一化将框架特有的高层算子如Conv2d、BatchNorm、Linear转换为编译器可处理的基础运算集合。构建 IR 结构生成与硬件无关的中间表示形式包括图形化 IR、三地址码 IR、基本块序列等。附加元信息补充形状信息、内存布局、数据类型、目标设备等编译所需信息。IR 优化执行算子融合、死码消除、常量传播、内存复用等优化。机器码生成优化后的 IR 被进一步翻译为 CPU、GPU 或 NPU 等平台的可执行指令。2.3 转换的作用解耦高层框架与底层硬件实现一次编译、多平台部署。为 JIT 与 AOT 提供统一的优化对象。屏蔽不同框架之间的接口差异。3 计算图与数据流图的区别3.1 数据流图Data Flow Graph, DFG数据流图是一种更通用的计算模型描述数据在处理单元之间的流动与变换广泛用于硬件设计、数字电路、并行计算等领域。3.2 主要区别抽象层次不同计算图面向数值计算与机器学习高层、与框架强相关。数据流图面向硬件与并行系统底层、与计算结构强相关。节点语义不同计算图节点算子、张量、变量、模型层。数据流图节点算术单元、寄存器、触发器、功能模块。依赖表示不同计算图强调数学运算依赖与控制流。数据流图强调数据传输、时序与硬件资源占用。应用领域不同计算图机器学习模型表示、自动微分、编译优化。数据流图处理器架构、FPGA 逻辑、数据流处理器设计。优化目标不同计算图优化运算效率、内存占用、推理延迟。数据流图优化吞吐量、流水线、硬件资源利用率。4 计算图的常见应用场景神经网络前向传播表示深度学习模型的每一层运算均被组织为计算图形成从输入张量到输出结果的完整执行流程。自动微分与梯度计算基于计算图的依赖关系可自动应用链式法则实现反向传播生成梯度计算子图。模型导出与序列化ONNX、TorchScript、TF Graph 等格式均以计算图为基础实现模型在不同框架间的迁移。JIT / AOT 编译输入编译器首先将用户代码转换为计算图再转为 IR 进行优化与代码生成。静态图执行模式TensorFlow 1.x、JAX 等系统使用静态计算图实现预调度与全局优化。量化、剪枝、压缩等模型改造以计算图为单位统一修改算子精度、移除冗余分支、合并连续运算。5 基于计算图的模型优化方法在计算图层面可实施多种与硬件无关的程序变换提升执行效率算子融合Operator Fusion将多个连续算子如MatMul Add ReLU合并为单一复合算子减少内存读写次数。常量折叠与传播在图阶段预先计算常量表达式避免运行时重复执行。死代码消除识别并移除对输出无贡献的计算分支与张量。公共子表达式消除识别重复计算结构统一计算结果并复用。内存布局优化根据计算访存模式调整张量存储顺序提升缓存命中率。静态内存规划预先确定所有张量的生命周期实现内存重叠复用。并行化调度识别无依赖的子图将其分配至不同计算单元并行执行。动态形状特化对频繁出现的张量形状生成专用计算路径提升执行效率。控制流规范化将动态 Python 控制流转换为图级结构化控制流便于编译器优化。6 总结计算图是机器学习模型的高层结构化表示是连接用户代码与编译器的关键抽象。计算图经规范化后转换为与硬件无关的 IR是 JIT 与 AOT 编译的基础流程。计算图与数据流图在抽象层次、节点语义与应用场景上存在明显区别。以计算图为对象可实施算子融合、内存优化、并行调度等一系列变换从而在不改变模型数学行为的前提下提升执行效率与部署适配能力。reference对比 JIT 和 AOT各自有什么优点与缺点? - 知乎https://www.zhihu.com/question/23874627AOT 和 JIT 以及混合编译的区别、优劣 - linghu_java - 博客园https://www.cnblogs.com/linghu-java/p/10577515.htmlAOT vs JIT性能提升300%的背后你必须知道的文档细节差异-CSDN博客https://blog.csdn.net/QuickDebug/article/details/155935768AOT 与 JIT 在生产环境的取舍 · DavidChan’s Bloghttps://imchenway.com/zh-CN/2020-12-jvm-aot-vs-jit-comparison/AOT 与 JIT 编译策略https://apxml.com/zh/courses/intro-ml-compiler-optimization/chapter-1-ml-compilation-stack/aot-vs-jit-compilationJust-in-Time (JiT) vs Ahead-of-Time (AoT) compilation in Angular - 2017https://stackoverflow.com/questions/41450226/just-in-time-jit-vs-ahead-of-time-aot-compilation-in-angular

相关文章:

JIT 与 AOT 编译区别

注:本文为 “JIT 与 AOT ” 相关合辑。 英文引文,机翻未校。 中文引文,未整理去重。 图片清晰度受引文原图所限。 如有内容异常,请看原文。 JIT 与 AOT 区别 1 基本概念与典型实例 JIT (Just-In-Time):即时编译&#…...

下载**Qwen3.5-35B-A3B**的GGUF格式文件

要下载Qwen3.5-35B-A3B的GGUF格式文件,可通过Hugging Face(国际主流)或ModelScope(国内镜像)平台获取,以下是具体步骤和注意事项: 一、核心下载地址 Qwen3.5-35B-A3B的GGUF文件主要由Unsloth团队…...

CODESYS开发教程7-变量作用域与存储类型实战解析

1. 变量作用域:从菜市场到保险箱的生动比喻 刚接触CODESYS开发时,我总被各种变量作用域搞得晕头转向。直到有天去菜市场买菜,突然发现变量作用域和菜市场的摊位布局简直一模一样!全局变量就像菜市场入口处的公共电子屏&#xff0c…...

从PMOS、NMOS到CMOS:揭秘现代芯片的互补设计哲学

1. 从PMOS与NMOS的相爱相杀说起 我第一次接触MOSFET晶体管是在大学实验室里,当时对着示波器上那些跳动的波形百思不得其解。教授指着电路板说:"记住,PMOS和NMOS就像电路世界的阴阳两极。"这句话让我花了整整三年时间才真正理解。 P…...

维普检测升级被卡延毕?2026论文降AI急救包:4招人工微调SOP与5大工具硬核横评

论文初稿快要交了,维普却突然搞了个大动作,把系统给升级了。说实话,这事真挺让人头疼的,有人前两天查还是绿的,以为稳了,结果升级完再一测,AI率直接飙红。 但别慌,也别怀疑自己是不…...

LVM命令大全

以下是 Linux LVM(逻辑卷管理)的核心命令分类详解及常用操作示例,结合最新技术网页整理而成:一、物理卷(PV)管理命令功能关键参数示例pvcreate初始化物理设备为PV-f(强制)-u&#xf…...

I2C协议详解:从基础原理到工程实践

1. I2C协议基础与核心设计思想I2C(Inter-Integrated Circuit)总线是Philips公司(现NXP)在1980年代开发的一种同步、半双工串行通信协议。作为嵌入式系统中最常用的总线之一,I2C以其简洁的两线制(SDA数据线S…...

3分钟上手:ControlNet-v1-1_fp16_safetensors让你的AI绘画更精准可控 [特殊字符]

3分钟上手:ControlNet-v1-1_fp16_safetensors让你的AI绘画更精准可控 🎨 【免费下载链接】ControlNet-v1-1_fp16_safetensors 项目地址: https://ai.gitcode.com/hf_mirrors/comfyanonymous/ControlNet-v1-1_fp16_safetensors ControlNet-v1-1_f…...

Polars 2.0大规模清洗性能翻倍的7个底层优化技巧:基于真实金融风控流水线压测数据

第一章:Polars 2.0大规模数据清洗性能跃迁的工程意义Polars 2.0 的发布标志着 Rust 原生 DataFrame 库在工程落地层面实现关键突破——其基于 Arrow 2.0 和全新查询优化器(QOv2)重构的执行引擎,将典型 ETL 清洗任务的吞吐量提升达…...

Java函数计算部署实战:从本地调试到生产环境上线的7个关键步骤(含阿里云/华为云/AWS对比)

第一章:Java函数计算部署全景概览Java函数计算是云原生场景下轻量级、事件驱动型服务的重要实现方式。它将传统Java应用的部署范式从虚拟机/容器迁移至按需执行、自动扩缩的无服务器架构,显著降低运维复杂度与资源闲置成本。开发者只需聚焦业务逻辑&…...

提升90% UI开发效率:psd2fgui工具从设计到实现的全流程指南

提升90% UI开发效率:psd2fgui工具从设计到实现的全流程指南 【免费下载链接】psd2fgui A tool for converting psd file to fairygui package. 项目地址: https://gitcode.com/gh_mirrors/ps/psd2fgui 一、核心价值:为什么选择psd2fgui&#xff1…...

开源吐槽大会:从抱怨到贡献的进化之路

开源项目吐槽大会:技术文章大纲技术背景与吐槽文化开源社区的协作模式与挑战 吐槽文化的价值:促进改进与社区互动 典型案例:知名项目的争议与改进常见吐槽点分析代码质量与可维护性问题 文档缺失或过时 社区响应速度与维护者态度 版本迭代与兼…...

Simulink Test实战:从需求创建到测试结果分析的完整流程指南

Simulink Test实战:从需求创建到测试结果分析的完整流程指南 在汽车电子和航空航天领域,模型开发与测试已成为产品研发的核心环节。Simulink Test作为MathWorks提供的专业测试工具,能够帮助工程师高效完成从需求管理到测试验证的全流程工作。…...

Kubernetes + LLM 实战:如何用 Gateway API Inference Extension 优化推理服务(附避坑指南)

Kubernetes LLM 实战:Gateway API Inference Extension 深度优化指南 在当今AI技术迅猛发展的背景下,大语言模型(LLM)已成为企业智能化转型的核心驱动力。然而,当这些复杂的模型需要部署到生产环境时,传统的Kubernetes路由方案往…...

【Java并发进阶】多线程案例核心解析(单例模式、阻塞队列、定时器、线程池...)

在实际开发中,多线程不仅仅是“会创建线程”那么简单。如何安全地共享数据、如何协调多个线程之间的协作、如何提升系统性能,才是工程中的重点。本文结合经典案例,深入理解:单例模式、生产者-消费者模型、阻塞队列、定时器、线程池…...

QGIS进阶指南:动态标注与条件表达式高级应用

1. 动态标注的核心价值与应用场景 当你面对一个包含上千条建筑数据的地图图层时,传统静态标注会显得力不从心——商场和医院用相同字体显示,重要地标淹没在普通建筑中,数据更新后还得手动调整样式。这就是动态标注技术大显身手的时候了。 动态…...

5个理由告诉你为什么Anime4K是动画视频超分的最佳选择

5个理由告诉你为什么Anime4K是动画视频超分的最佳选择 【免费下载链接】Anime4K A High-Quality Real Time Upscaler for Anime Video 项目地址: https://gitcode.com/gh_mirrors/an/Anime4K Anime4K是一套开源的实时动画视频超分辨率算法,专门为提升动画内容…...

Windows 系统安装 MySQL

访问 MySQL 官方下载页:https://dev.mysql.com/downloads/installer/ 选择 “MySQL Installer for Windows”,推荐下载 “mysql-installer-community-8.0.36.msi”(社区版,免费) 启动后会看到安装类型选择界面&#xf…...

App启动总览

特征 / 步骤 冷启动 (Cold Start) 温启动 (Warm Start) 热启动 (Hot Start) 速度 最慢 🐢 中等 🏃 最快 🚀 进程创建 ✅ 需要 ❌ 跳过 ❌ 跳过 Application.onCreate() ✅ 需要调用 ❌ 跳过 ❌ 跳过 Activity.onCreate() ✅ 需要调用 ✅ 需要调用 ❌ 跳过 Activity.onSta…...

RimSort:重新定义RimWorld模组管理的智能工具

RimSort:重新定义RimWorld模组管理的智能工具 【免费下载链接】RimSort 项目地址: https://gitcode.com/gh_mirrors/ri/RimSort 当你花费数小时手动调整上百个RimWorld模组的加载顺序,却依然遭遇游戏崩溃时;当你在多个平台间切换下载…...

2026年漏水传感器选购指南:这5个品牌让您家远离水患隐患

随着智能家居与工业自动化水平的提升,漏水传感器作为预防水患的关键设备,其市场需求和技术要求日益增长。在2026年的当下,行业面临着从民用住宅到数据中心、从能源化工到精密制造等多场景的复杂挑战。本文将深入分析当前漏水传感器领域的技术…...

用OpenMV和STM32F765VI做个追球小车:从硬件接线到PID调参的保姆级避坑指南

从零打造智能追球小车:OpenMV与STM32F765VI实战全解析 1. 项目构思与硬件选型 第一次尝试用视觉识别做智能小车时,我对着满桌子的开发板和传感器发愁——到底哪些组合才能既省钱又高效?经过三个版本的迭代,这套基于STM32F765VI和O…...

conda创建环境报错repodata.json failed?手把手教你更换国内镜像源(2024最新)

Conda环境创建报错repodata.json失败?2024年国内镜像源配置全攻略 最近在帮团队新来的实习生配置开发环境时,遇到了一个经典问题——conda创建环境时卡在"Collecting package metadata (repodata.json)"这一步,要么报错要么无限等待…...

用Verilog手搓一个IEEE754浮点加法器:从状态机设计到FPGA上板验证(附完整代码)

从零构建IEEE754浮点加法器:Verilog状态机设计与FPGA实战全解析 1. 浮点运算器的工程实现挑战 在数字信号处理和高性能计算领域,浮点运算器一直是核心组件。与整数运算不同,浮点数的特殊存储格式使得其运算过程复杂得多。IEEE754标准定义了浮…...

南京邮电大学《数学实验》模块三(线性映射的迭代)实战解析与代码实现

1. 线性映射迭代:从理论到实战的桥梁 第一次接触线性映射迭代这个概念时,我和大多数同学一样感到困惑——这些抽象的矩阵运算到底能解决什么实际问题?直到在南京邮电大学《数学实验》课程中亲手实现了几个案例,才真正体会到它的魅…...

一天一个开源项目(第59篇):Dream Recorder - 用 AI 把梦境变成视频的物理设备

引言 “Record your dreams. Wake up. Speak. Watch them come to life.” 这是「一天一个开源项目」系列的第 59 篇文章。今天介绍的项目是 Dream Recorder(GitHub)。 想把梦境变成可回放的视频?Dream Recorder 是 Modem 开源的物理梦境记录…...

基于中点电位平衡的光伏NPC三电平逆变器并网仿真研究:额定功率100kW、直流电压750V的M...

光伏NPC三电平逆变并网仿真 [1]包含中点电位平衡,额定功率100kW,直流电压750V。 光伏阵列参数已设定,采用mppt算法(扰动观察法); [2]主电路采用二极管钳位型NPC逆变器; 采用电压电流双闭环控制&…...

等式方程的可满足性

class Solution {public:int find(vector<int>& father,int x){if(father[x]!x)father[x] find(father,father[x]);//如果father[x]不是源头&#xff0c;继续往前找return father[x];}void un(vector<int>& father,int x,int y){father[find(father,x)]fin…...

深入解析Infineon BTS54040-LBF高边芯片的SPI控制与汽车电子应用

1. BTS54040-LBF高边芯片的核心特性解析 第一次接触英飞凌的BTS54040-LBF时&#xff0c;我正负责一个汽车氛围灯控制项目。这块指甲盖大小的芯片让我印象深刻——它把四路高边开关、SPI控制和完善的保护机制集成在单个封装里。先说说最关键的几个特性&#xff1a; 四通道智能开…...

UUID和Name不在同一条BLE广播报文里

概要通过在命令行窗口打印部分报文信息&#xff0c;发现&#xff1a;设备向外发送BLE蓝牙低功耗广播&#xff0c;设备的UUID和Name不在同一条广播报文里UUID是通用唯一标识符一、设备1、发送报文的设备能够发送BLE蓝牙低功耗广播的设备。本篇使用的是周围环境中的未知设备。2、…...