现在手头负责的单体项目是 15-20 秒左右, 有点影响自己的写代码节奏。。加一些启动参数能达到 10-12 秒,感觉变化不大,如果能在 5 秒内启动该多好。
之前待过的公司也都是单体 Java 项目,启动速度慢的能达到 1 分钟, 大家现在手头的项目启动速度都是什么级别的呢? 有没有影响到你们的思维节奏?
补充一下,有人可能之前没想过去优化 Spring 项目的启动速度。 至少有几个启动参数是效果非常好的, 比如
-XX:TieredStopAtLevel=1 -Xmx1024M -Xms1024m -noverify

参考:
1
yitingbai 2021 年 6 月 22 日
用到的东西多了启动肯定慢啊, 如果有条件可以把项目分成几个模块, 分别开发分别调试
|
3
KagurazakaNyaa 2021 年 6 月 22 日 拆成不同的组件,写好 CI,提交的时候自动 rolling update,这样就方便了
|
4
pmispig 2021 年 6 月 22 日
快的 60 秒,慢的 180 秒。。。你这 15 秒超神
|
5
peyppicp 2021 年 6 月 22 日
golang 项目,2s
|
6
cslive 2021 年 6 月 22 日
配置垃圾,2 分钟起不起来
|
8
kwanzaa 2021 年 6 月 22 日
故意放慢速度来打印 log 提供仪式感,不然裸载 2s 。
|
10
zen1 2021 年 6 月 22 日
本地最少 2min+
|
11
wwwz 2021 年 6 月 22 日
慢啊,java 用 jrebel 热部署,有的时候还是需要重启
|
12
Tink PRO 纠结这个感觉意义不大啊
|
13
zzzmh 2021 年 6 月 22 日 影响思路具体如何影响,是每次写完调试,重启项目,慢?
感觉我不会那么频繁遇到需要重启的情况,写完一套逻辑,重启一次,一天也就十来次。 另外解决思路很简单啊,自己买个 amd 5800h 芯的本子,刷 linux 系统,不管重启还是编译都快到赏心悦目 |
14
simple2025 2021 年 6 月 22 日
@zzzmh 10 来此重启,我 2 分钟就用完了
|
15
pkoukk 2021 年 6 月 22 日
2s 左右?
现在写 tdd,新代码 cover 的差不多了才会启项目搞集成测试,启不了几次 |
16
wr516516 2021 年 6 月 22 日
好奇你加的什么启动参数
|
18
szq8014 OP |
19
reeco 2021 年 6 月 22 日 via iPhone
60w 行代码,编译 5 分钟,启动 15 分钟
|
20
L5tEU4WX072p5P42 2021 年 6 月 22 日 via iPhone
35 分钟
|
21
rockddd 2021 年 6 月 22 日 带薪启动,不要在意速度。正好可以去喝一杯咖啡
|
22
janda 2021 年 6 月 22 日
junit 单元测试
|
24
NUT 2021 年 6 月 22 日
这个问题核心是在于,如何快速 debug 吧。
想好逻辑,用 TDD 减少 debug 次数,debug 很费时间,我认为如何降低 debug 次数,比考虑项目启动优化,要有意义。 俗称 脑子跑代码。。。 各种设计原则用一用,什么单一原则,开闭等等。 如果对项目启动有要求,差那几秒没啥意义,现在都是容器化时代了,蓝绿红黑,随便搞搞就解决了。 |
25
dream10201 2021 年 6 月 22 日
在主程序的第一句:print("启动成功")
|
26
byte10 2021 年 6 月 22 日
|
27
hsuvee 2021 年 6 月 22 日
Java 曾有一个 20 分钟
|
28
yuancoder 2021 年 6 月 22 日
php 一秒内
|
30
yeqizhang 2021 年 6 月 22 日 via Android
启动几分钟,编译十分钟……
|
31
simple2025 2021 年 6 月 22 日
@byte10 golang 是启动快,但是写的时候想死
|
32
xloger 2021 年 6 月 22 日
Android 项目,冷启动要 2 分多钟,打一个 release 包要 6 分钟。时常吐槽说等编译的时间已经超过我 debug 的时间了。耗时分析有一半时间是在 kotlin 编译上,为此还看了下别人的优化方案: https://juejin.cn/post/6854573211548385294
看完放弃自己优化的念头了。我需要公司配个更好的 CPU ...... |
33
Leonard 2021 年 6 月 22 日
公司抠,电脑配置不行,慢就慢呗,反正我按点下班,慢浪费的也不是我的时间
|
34
otakustay 2021 年 6 月 22 日
冷启动 3 分钟左右,有缓存的热启动 5 秒左右,热更新几乎秒完成
|
35
HDMItoDP 2021 年 6 月 22 日
300 多秒
|
36
Junzhou 2021 年 6 月 22 日
i7-7700 14s,M1 8s
|
37
nxforce 2021 年 6 月 22 日
这个没有固定指标的吧?
同一个项目,有人 10 核 5G 主频,64G 内存随便开。 有人双核赛扬 8g 内存卡半天。。。 |
38
sprite82 2021 年 6 月 22 日
i5 7500 16G 内存 启动 15s 左右,但是我一天启动次数不超过 10 次
|
39
polo3584 2021 年 6 月 22 日
最长的时候 500 多秒,后面通过一些注释终于降到了 150 秒内。
|
40
Greatshu 2021 年 6 月 22 日
10 分钟,刚好够去一次厕所
|
41
nxcdJaNnmyF9O90X 2021 年 6 月 22 日
go 的编译速度快
|
42
bghtyu 2021 年 6 月 22 日
go 启动很快,但是编译也挺慢的
|
43
zhanggg 2021 年 6 月 22 日
单体还好,最多几分钟,全新起一套完整服务要超 24 小时
|
44
hapiman 2021 年 6 月 22 日
用 Go,5 秒内启动
|
46
gtx990 2021 年 6 月 22 日 via Android
Java guice
启动倒是很快,几秒就行 编译,docker 打包要几分钟 |
47
inhzus 2021 年 6 月 22 日 via iPhone 项目本地启动不起来,环境上部署一下五分钟过去了。调试绝大多数靠单测,定位问题用 arthas
|
48
ysicing 2021 年 6 月 22 日
Go 启动 2s,编译 10s 左右
|
49
heheda11 2021 年 6 月 22 日
Python fastApi 0.1s ~
|
50
lixingjun 2021 年 6 月 22 日
nodejs 1.5 秒,不过这样比较似乎意义不大
|
51
ConfusedBiscuit 2021 年 6 月 22 日
巨无霸 Java 项目,IDEA 导入一次 20 分钟+,启动一次 5 分钟+,打包 1.5GB
|
52
3dwelcome 2021 年 6 月 22 日 @xloger "打一个 release 包要 6 分钟"
apk 打包有一些时间是用在压缩 asset 上,apk 的本质是 zip,每个文件都是单独压缩的,如果文件没有变,可以直接复用上一次压缩结果(前提是要保留上一次的压缩包作为对比对象) 这样速度就很快了。 |
53
akira 2021 年 6 月 22 日
java 的项目啊。。分钟级别都是能接受的
|
54
HunterPan 2021 年 6 月 22 日 via iPhone
1 分钟内可接受,自己的项目一般 30s 内
|
55
wdlth 2021 年 6 月 22 日
20 秒左右吧
|
56
lzfnb 2021 年 6 月 23 日 要那么快干啥,启动时间越长划水时间越久
|
57
imbushuo 2021 年 6 月 23 日
warmup 两小时……
|
58
eudore 2021 年 6 月 23 日
go 直接启动 1 秒,编译启动 5 秒内。
|
59
xe2vherd 2021 年 6 月 23 日 via iPhone
春节的时候做主站的项目,编译十分钟启动十分钟。
|
60
privil 2021 年 6 月 23 日
java 项目从 20 s 到 120s,话说用 openj9 启动会快很多。
|
61
free9fw 2021 年 6 月 23 日
30w 行代码大概 85s
|
64
xingguang 2021 年 6 月 23 日
18 年的时候接收的一个项目还用的 webpack1,启动一次五分钟,在忍了一年以后我升级了,启动速度不到一分钟
|
65
myd 2021 年 6 月 23 日
php 不需要启动
|
66
janxin 2021 年 6 月 23 日
听上去是个 Spring 项目...
|
67
yazinnnn 2021 年 6 月 23 日
从打印第一行日志到处理第一个请求 1.5s,vertx+kotlin,不过这有什么意义呢....
用 spring 的话肯定慢阿,因为 spring 慢就喷 java 烂未免也太狭隘了 |
69
Tinyang 2021 年 6 月 23 日
3 分钟
|
71
chainchan 2021 年 6 月 23 日
20 分钟
|
72
byte10 2021 年 6 月 23 日
@chenqh 我觉得 nodejs 写起来方便,写的外包项目,写的小工具,go 也不错啊,可以编译成可执行文件,也是很舒服的,写点小工具方便,安卓,macos,ios 那些都可以直接跑
|
74
Cbdy 2021 年 6 月 23 日 via Android
秒级
|
75
zzzmh 2021 年 6 月 23 日
@wangsongyan 看水平,我是半吊子,我就省心用 ubuntu,因为新版 amd 的核显驱动老出问题,就 ubuntu+5.10 内核最省心。。。否则我可能会首选 deepin,因为 deepin 带的微信什么的至少是调试好的,可以免去我自己调试。。。。然后如果是大佬,推荐 arch debian fedora manjaro,这种我只敢在虚拟机里玩,笔记本玩过一次 manjaro,从入门到重装系统,只花了一个月
|
76
HannibaI 2021 年 6 月 23 日
150w 行 C++,编译 5 分钟,启动 4-5s 吧
|
78
xiluo 2021 年 6 月 23 日
尝试换到 Graalvm 试试呢,启动速度提高 50 倍
|
79
luckyc 2021 年 6 月 23 日
python flask
<1s |
80
thetbw 2021 年 6 月 23 日
大概 27 分钟吧
|
82
x940727 2021 年 6 月 23 日
@byte10 Go 的编译期没有任何优化的,而且 Go 的语法对编译器更友好……Java 也有不优化的编译器,AOT 的速度其实也勉勉强强,主要有反射会影响静态编译。
|
83
szq8014 OP @byte10 Java 也可以随时写随时跑, 想写启动快的 Java 可以尝试 quarkus, 你要有勇于离开 Spring 的魄力才行, 当然现在 spring native 也在迭代中。
|
84
chihiro2014 2021 年 6 月 23 日
140s-200s 左右?
|
85
wanguorui123 2021 年 6 月 23 日
秒起
|
86
3dwelcome 2021 年 6 月 23 日
我其实挺好奇 chrome 开发组是怎么缩短启动时间的,我自己编译浏览器,一般启动至少要 5 分钟以上。
因为 C++必须把无数.obj 文件链接成一个 exe,对于 chrome 这种巨无霸体量,这一步特别的费时间。 然后我搜了一下谷歌,还真有 chrome.dll 编译优化,blog.llvm.org/2018/01/improving-link-time-on-windows-with.html 。 诀窍就是换编译器,一开始是 MSVC,编译 chrome.dll 用时 507.17s 。换了 CLang 之后 34.76s ,10 倍速度提升。 |
87
sunnywx 2021 年 6 月 23 日
前台 war,在服务器上大概 5 分钟,😂
|
88
FlexGap 2021 年 6 月 23 日
golang 的项目,大概七八秒钟
|
89
MithrilCookie 2021 年 6 月 23 日
借楼问一下,生产环境 PASS(公司自建 PASS)下容器的启动速度远远比不上开发机(本人用 m1 mac),这种情况正常吗? SpringBoot 的单体应用,本地十几秒,生产上两三分钟(容器是 4 核 8g 的),感觉跟树莓派是一个级别的
|
90
ylsc633 2021 年 6 月 23 日
作为一个刚刚从 Golang 转到 java 的开发者来说
java 一启动.. 真的慢 问题是 java 项目是个新写的项目 代码估计就几万行吧 |
91
ychost 2021 年 6 月 23 日
5 分钟
|
92
mreasonyang 2021 年 6 月 24 日 via iPhone
怎么定义启动速度快慢呢?是以 JVM 完成启动和初始编译为准,还是以服务 ready 可供调用为准?如果是前者,那可以考虑楼上的建议。如果是后者,那么只要是用了连接池的项目都不会快,同时这种情况下与长尾的建连相比,JVM 相关的启动耗时可以忽略不计了
|
93
Ailoli 2021 年 6 月 24 日
vue 1 分钟+-
|
94
johnniang 2021 年 6 月 24 日 via Android
|
95
yizmaoaa 2021 年 6 月 24 日
Quarkus 2 秒。楼上有人提 Spring Native 。应用场景不一样。Graalvm 打包后的 native-image 是秒起,但是打包速度是很慢的。用都没用过的东西就别瞎推荐了-
|
96
telan233 2021 年 6 月 24 日
java 编译+启动 4 分钟
|
98
laobodslr 2021 年 6 月 25 日
200S 左右
|
99
starxg 2021 年 6 月 29 日 启动时加上-Dspring.main.lazy-initialization=true 或者在配置文件里加上这句话。
开启全局懒加载,启动速度非常快! 但是快也是有代价的,参考这里: https://blog.csdn.net/peterwanghao/article/details/95617046 |
100
Dreamerwwr 2022 年 7 月 8 日
@polo3584 用的什么注释?
|