idea中提高编译速度研究

news2025/4/19 7:48:09

探索过程:

有三种情况:

第一种:

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

有待继续研究。

第二种:

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

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

第三种:

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

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

汇报结果:

特性javacEclipse 编译器 (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区别不大~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2336585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

静态链接part2

编译 语义分析 由语义分析器完成,这个步骤只是完成了对表达式的语法层面的分析,它并不了解这个语句是否真的有意义(例如在C语言中两个指针做乘法运算,这个语句在语法上是合法的,但是没有什么意义;还有同样…

Vue3+Vite+TypeScript+Element Plus开发-17.Tags-组件构建

系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 Pinia持久化 动态路由 -动态增加路由 动态路由-动态删除…

3D语义地图中的全局路径规划!iPPD:基于3D语义地图的指令引导路径规划视觉语言导航

作者: Zehao Wang, Mingxiao Li, Minye Wu, Marie-Francine Moens, Tinne Tuytelaars 单位:鲁汶大学电气工程系,鲁汶大学计算机科学系 论文标题: Instruction-guided path planning with 3D semantic maps for vision-language …

ShellScript脚本编程

语法基础 脚本结构 我们先从这个小demo程序来窥探一下我们shell脚本的程序结构 #!/bin/bash# 注释信息echo_str"hello world"test(){echo $echo_str }test echo_str 首先我们可以通过文本编辑器(在这里我们使用linux自带文本编辑神器vim),新建一个文件…

【HarmonyOS 5】敏感信息本地存储详解

【HarmonyOS 5】敏感信息本地存储详解 前言 鸿蒙其实自身已经通过多层次的安全机制,确保用户敏感信息本地存储安全。不过再此基础上,用户敏感信息一般三方应用还需要再进行加密存储。 本文章会从鸿蒙自身的安全机制进行展开,最后再说明本地…

探索鸿蒙沉浸式:打造无界交互体验

一、鸿蒙沉浸式简介 在鸿蒙系统中,沉浸式是一种极具特色的设计理念,它致力于让用户在使用应用时能够全身心投入到内容本身,而尽可能减少被系统界面元素的干扰。通常来说,就是将应用的内容区巧妙地延伸到状态栏和导航栏所在的界面…

网站301搬家后谷歌一直不收录新页面怎么办?

当网站因更换域名或架构调整启用301重定向后,许多站长发现谷歌迟迟不收录新页面,甚至流量大幅下滑。 例如,301跳转设置错误可能导致权重传递失效,而新站内容与原站高度重复则可能被谷歌判定为“低价值页面”。 即使技术层面无误&a…

在Mac上离线安装k3s

目录 首先是安装multipass。 1. 系统要求 2. 环境准备 本来想照着网上文档学习安装一下k3s,没想到在docker被封了之后,现在想通过命令行去下载github的资源也不行了(如果有网友看到这个文档、并且知道问题原因的,请留言告知&am…

2025低代码平台选型策略:ROI导向下的功能与成本权衡

在当今快速变化的商业环境中,企业面临着前所未有的挑战与机遇。数字化转型已成为企业提升竞争力的关键,而软件开发的高成本和长周期无疑是实现这一转型的绊脚石。 低代码平台的兴起,为企业提供了一种高效、灵活的解决方案,使得非…

Redis的IO多路复用

1 传统的socket编码模型 传统 Socket 模型通常采用 多线程/多进程 或 阻塞 I/O 的方式处理网络请求。以下是典型实现步骤: 创建套接字(Socket) 步骤:调用 socket() 创建一个 TCP/UDP 套接字。通常把这个套接字称为【主动套接字】…

基于YOLOv9的课堂行为检测系统

基于YOLOv9的课堂行为检测系统 项目概述 本项目是一个基于YOLOv9深度学习模型的课堂行为检测系统,旨在通过计算机视觉技术自动识别和监测课堂中学生的各种行为状态,帮助教师更好地了解课堂教学效果。 项目结构 课堂行为检测/ ├── data/ │ ├──…

端、管、云一体化原生安全架构 告别外挂式防护!

面对数字化转型浪潮,企业网络安全风险日益凸显。数据泄露、黑客勒索等事件频发,合规要求加速推进。尽管企业纷纷部署了防病毒、身份认证、文件加密、入侵防护、流量监控等多种安全系统,但分散且孤立的架构非但没有有效抵御风险,反…

BI面向模型开发和面向报表开发,有什么区别?

在数字化时代,商业智能(BI)已成为企业决策不可或缺的工具。BI项目实施时,通常有两种开发模式:面向模型开发和面向报表开发。虽然两者都旨在通过数据驱动决策,但在开发逻辑、目标价值和技术路径上存在显著差…

进程控制(上)【Linux操作系统】

进程控制 写时拷贝 本质是一种减少深拷贝的方法 Linux中有很多拷贝的场景都用得上写时拷贝,下面以创建子进程时的写时拷贝为例: 子进程被创建的时候: 会继承父进程的mm_struct和页表 所以子进程刚刚继承时,父子进程的代码和数据…

5G网络下客户端数据业务掉线频繁

上层应用的日志和界面在待机状态下(即没有做通话等业务操作),会频繁提示“离线”。 主要先看有没有丢网,UL BLER有没有问题。确认没有问题。看到业务信道释放后也可以成功重新建链。所以以为这个只是终端业务进入dormant态的提示…

【Docker项目实战】使用Docker部署Gitblit服务器

【Docker项目实战】使用Docker部署Gitblit服务器 一、Gitblit介绍1.1 Gitblit 介绍1.2 主要特点 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Gitblit镜像五、部署Gitbli…

Vitis: 使用自定义IP时 Makefile错误 导致编译报错

参考文章: 【小梅哥FPGA】 Vitis开发中自定义IP的Makefile路径问题解决方案 Vitis IDE自定义IP Makefile错误(arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument)解决方法 Vitis 使用自定义IP时: Makefile 文件里的语句是需要修改的,…

helm的go模板语法学习

1、helm chart 1.0、什么是helm? 介绍:就是个包管理器。理解为java的maven、linux的yum就好。 安装方法也可参见官网: https://helm.sh/docs/intro/install 通过前面的演示我们知道,有了helm之后应用的安装、升级、查看、停止都…

AI 语音公司 ElevenLabs 进军亚太市场设立东京子公司;EverTutor Live :语音交互 AI 教育平台丨日报

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观…

STM32启动流程详解

STM32启动流程详解 本文档详细介绍STM32微控制器从上电到main函数执行的完整启动流程。 1. 上电与复位过程 当STM32芯片上电或复位时,硬件会执行以下步骤: 上电复位(POR)/低电平复位(PDR): 芯片接通电源或NRST引脚置低时触发初始PC值设置: 程序计数器…