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区别不大~

相关推荐
熙客6 分钟前
TiDB:分布式关系型数据库
java·数据库·分布式·tidb
你想考研啊1 小时前
linux安装jdk和tomcat和并自启动
java·linux·tomcat
悟能不能悟3 小时前
java的java.sql.Date和java.util.Date的区别,应该怎么使用
java·开发语言
Q_Q5110082853 小时前
python+django/flask的眼科患者随访管理系统 AI智能模型
spring boot·python·django·flask·node.js·php
高山上有一只小老虎4 小时前
java 正则表达式大全
java·正则表达式
_院长大人_5 小时前
设计模式-工厂模式
java·开发语言·设计模式
凌波粒5 小时前
MyBatis完整教程IDEA版(2)--ResultMap/注解/一对多/多对一/lombok/log4j
java·intellij-idea·mybatis
蓝-萧5 小时前
【玩转全栈】----Django基本配置和介绍
java·后端
priority_key5 小时前
排序算法:堆排序、快速排序、归并排序
java·后端·算法·排序算法·归并排序·堆排序·快速排序
韩立学长5 小时前
基于Springboot的旧时月历史论坛4099k6s9(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端