idea中提高编译速度研究

探索过程:

有三种情况:

第一种:

idea中用eclipse编译器编译springboot项目,然后debug启动Application报错找不到类。

有待继续研究。

第二种:

idea中用javac编译器编译springboot项目,重新构建用时:2min。

然后services点击debug用时:待测试。

第三种:

让maven去构建,重新构建用时:2min。

然后services点击debug用时:10s(比较推荐

汇报结果:

特性 javac Eclipse 编译器 (ECJ) Maven 构建
编译器类型 JDK 自带的官方编译器 Eclipse 自带的编译器 Maven 使用 javac 或其他编译器插件
编译方式 一次性编译整个项目 支持增量编译,只编译更改的部分 支持增量编译(通过插件)
错误处理 遇到第一个编译错误时停止编译 继续编译并报告所有错误 继续编译并报告所有错误
多线程支持 单线程编译 支持多线程编译 支持多线程编译(通过 -T 参数)
依赖管理 不处理项目依赖,需手动配置 不处理项目依赖,需手动配置 自动解决依赖,通过 pom.xml 管理
构建过程 仅负责编译,其他步骤需手动进行 仅负责编译,其他步骤需手动进行 一站式解决方案,包括编译、测试、打包等
扩展性 限于编译,无扩展 限于编译,无扩展 提供插件机制,可通过插件扩展功能
适用场景 适合命令行环境和简单项目 适合 IDE 环境,需要快速反馈和即时代码分析 适合复杂项目,需要自动化构建和依赖管理

硬件资源

  • CPU:编译是计算密集型任务,CPU的核数和主频对编译速度影响显著。多核CPU可并行处理编译任务,加快速度。

  • 内存:编译过程需要大量内存,内存不足会导致JVM频繁垃圾回收,降低效率。合理设置JVM的最大堆内存和初始堆内存参数,可提升编译速度。

  • 存储设备:快速的存储设备,如SSD硬盘,能显著提升文件读写速率,尤其在处理大量小文件的项目时效果明显。

软件环境和IDE设置

  • JVM参数配置:通过调整JVM的启动参数,如增加堆内存、选择合适的垃圾回收器等,可有效改善编译过程的内存使用情况,减少垃圾回收频率,从而加快编译速度。

  • 多线程编译:开启多线程编译功能,可将编译任务分配到多个CPU核心上运行,大幅提高编译效率。例如,一个项目未开启多线程时构建需3分50秒,开启后仅需1分56秒。

  • 构建工具配置:对于使用Gradle或Maven的项目,优化其配置文件可显著提升构建速度。如Gradle支持任务并行执行,Maven可通过额外配置实现并行构建。此外,禁用不必要的任务和插件,如Gradle中的测试任务、Maven中的文档生成任务等,也能减少构建时间。

  • 增量编译:IDEA支持增量编译,即只重新编译代码中改变的部分,而不是整个项目,这能极大提高编译效率。

  • 项目依赖管理:减少不必要的依赖,合理管理依赖版本,避免依赖冲突和冗余,可减少编译过程中的复杂性,提高构建速度。

  • IDE缓存管理:适当的配置IDE缓存,可以加快IDE的响应速度并减少内存占用

结论:

maven构建开启多核构建,然后让maven去构建,能加快构建速度。

测试截图:

maven install的构建速度如图,我的笔记本-T设置为8效果最好

ps:

1、无意间拔了充电器,maven install的速度骤降三倍左右~😂

2、设置maven settings仓库更新策略为daily和never区别不大~

相关推荐
wyhwust1 分钟前
idea出现tomcat不能正确部署的问题--解决方案
java·ide·intellij-idea
带刺的坐椅15 分钟前
FastMCP(python)和 SolonMCP(java)的体验比较(不能说一样,但真的很像)
java·python·solon·mcp·fastmcp
一勺菠萝丶31 分钟前
深入浅出:Spring Boot 中 RestTemplate 的完整使用指南
java·spring boot·后端
努力的搬砖人.35 分钟前
Java 线程池原理
java·开发语言
有梦想的攻城狮1 小时前
SpEL(Spring Expression Language)使用详解
java·后端·spring·spel
极小狐1 小时前
如何从极狐GitLab 容器镜像库中删除容器镜像?
java·linux·开发语言·数据库·python·elasticsearch·gitlab
caihuayuan52 小时前
前端面试2
java·大数据·spring boot·后端·课程设计
黄雪超2 小时前
JVM——Java语法糖与Java编译器
java·开发语言·jvm
旷野本野2 小时前
【JavaWeb+后端常用部件】
java·开发语言
郭尘帅6662 小时前
SpringBoot学习(上) , SpringBoot项目的创建(IDEA2024版本)
spring boot·后端·学习