news 2026/4/12 20:02:49

HNU 编译系统 作业1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HNU 编译系统 作业1

题目1

请从编译功能的角度简要说明JDKJRE的主要区别

·如果我们只有一个.java 源文件,要运行该程序,最少需要安装的是 JDK 还是 JRE?请说明理由;

·如果我们只有一个已经编译好的.class 字节码文件,最少需要安装的是 JDK 还是 JRE?请说明理由。

·结合上述问题与前置课程知识,思考C++/Golang/Java三种语言在编译开销与运行性能上的取舍。

(1)从编译功能的角度来看,JDK与JRE的主要区别在于:

JDK包含 JRE + 编译器 javac + 调试工具等,既能编译源代码,也能运行字节码。

JRE只包含运行环境(JVM + 核心类库),只能运行字节码,不能编译源代码。

(2)如果我们只有一个.java 源文件,则需要先编译为.class字节码文件才能运行。编译在JDK中才有,JRE没有,因此最少需要安装JDK。

(3)如果我们只有一个已经编译好的 .class 字节码文件,则无需编译可直接运行,而JRE可以运行字节码,因此最少需要安装JRE。

(4)C++/Golang/Java三种语言在编译开销与运行性能上的取舍

C++编译为本地机器码,编译时间较长,生成的可执行文件大且依赖平台。

优点:启动快,运行性能极高。

缺点:跨平台性差,开发周期中频繁修改→重新编译→耗时大。

Golang编译为本地可执行文件,但编译器设计追求快速。

优点:编译快、部署方便(单一可执行文件),运行性能接近 C++。

缺点:相比 Java 缺少成熟的虚拟机级优化(如 JIT),长时间运行性能优化略逊。

Java先编译为 .class 字节码,再由 JVM 解释/即时编译(JIT) 运行。

优点:跨平台性强(一次编译,到处运行),JIT 能在运行期优化热点代码,长期性能可接近 C++。

缺点:首次运行时需要类加载 + JIT,启动速度较慢,编译开销分布在运行期。

综合取舍:

C++:编译慢、运行快 → 适合性能极限要求(如游戏引擎、系统软件)。

Go:编译快、运行快 → 适合服务端开发,快速迭代和部署。

Java:编译适中、运行性能动态优化 → 适合跨平台、大型系统、长期运行的服务。

题目2

简要描述深度学习框架(以PyTorch为例)的编译流程,并思考其与传统程序的编译结果优化目标相比,有哪些相同点与不同点?

编译结果

相同点

①都会生成可执行的目标代码(或库),供运行时调用。

②都需要经过中间表示(IR)和优化步骤。

不同点

传统程序:结果是固定的二进制文件/可执行程序,逻辑确定。

深度学习框架:结果可能是动态库 + JIT/AOT 生成的特定算子代码,运行时仍可变化和优化。

优化目标

相同点

①都追求高效执行和资源利用。

②都会使用常见的优化手段(如常量折叠、循环展开、内联)。

不同点

传统程序:优化重点在于指令执行效率、寄存器分配、分支预测、整体运行时间与代码体积。

深度学习框架:优化重点在于并行计算效率、算子融合、内存/显存带宽利用率、硬件特化(CPU/GPU/TPU)。

题目3

给定表达式a = 3 + 4 * 2,仿照教材图1.4画出此表达式的语法树。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 10:13:47

Windows 查看本次开机时间

在Windows系统中,可以通过多种CMD命令来查看电脑的开机时间。以下是几种常用的方法:1. 使用 systeminfo 命令这是最常用且简单的方法。在命令提示符中执行此命令后,可以快速找到系统的启动时间。操作步骤:按下 Win R 键&#xff…

作者头像 李华
网站建设 2026/4/10 14:34:43

在北京,寻找能聊创业、聊生活、一起向上的同行者

在北京这座快节奏的城市里,你是否也常觉得:想聊创业思路时,身边少个能懂你野心的人;想解锁生活乐趣时,找不到合拍的同伴?其实好的同行者,或许只差一个相遇的契机。超哥做新媒体创业,…

作者头像 李华
网站建设 2026/4/5 1:57:16

vue基于Springboot框架的摄影作品分享活动参与网站

目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

作者头像 李华
网站建设 2026/4/9 10:12:12

vue基于Springboot框架的网上购物商城抽奖系统 商家

目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

作者头像 李华
网站建设 2026/4/12 1:02:30

基于C51单片机红绿黄交通灯的设计

基于C51单片机红绿黄交通灯的设计 第一章 系统概述 传统红绿黄交通灯多依赖固定电路控制,时序单一且无法灵活调整,难以适配不同时段车流量变化,易在高峰时段引发路口拥堵。基于C51单片机的红绿黄交通灯系统,以低成本、高可靠性的C…

作者头像 李华
网站建设 2026/4/9 23:58:28

Java开发者AI转型路线图:从CRUD到AI架构师的4种路径+实战项目(建议收藏)

文章分析了Java开发者向AI大模型领域转型的必要性、优势与路径。指出Java开发者具备工程化思维和企业级开发经验等转型优势,可通过渐进式路径完成技术栈过渡。文章详细介绍了需要强化的数学基础、大模型专项能力,以及如何将Java工程经验转化为AI项目价值…

作者头像 李华