因此,比较的目的并不是为了证明哪个框架更好或更高效,而是分析研究这些特定实现的一个案例。
测试计划
为了测试这两种实现,我们将使用 JMeter 执行测试,并分析其测试报告。此外,我们将使用 VisualVM 在执行测试期间监控应用程序的资源利用率。
测试将运行 5 分钟,会调用所有 API,从预热期开始,然后增加并发用户数,直到达到 1,500。我们将在前几秒钟开始填充数据库,然后开始查询,如下所示:
所有测试均在以下规格的机器上进行:
由于缺乏与其他后台进程的隔离,最终结果可能不太理想,但正如前面提到的,我们无意对这两个框架的性能进行广泛而详细的分析。
调查结果
对开发人员来说,这两个项目的体验都很棒,但值得一提的是 Spring Boot 有更好的文档,在网上也可以找到更多资料。 Quarkus 在这方面正在改进,但仍然有点落后。
在指标方面,我们有如下结果:
通过这个实验,我们可以观察到 Quarkus 在 JVM 和原生版本的启动时间方面几乎比 Spring Boot 快一倍。构建时间也快得多。在原生镜像的情况下,构建耗时: 9 分钟(Quarkus)对 13 分钟(Spring Boot),JVM 构建耗时: 20 秒(Quarkus)对 39 秒(Spring Boot)。
Artifact(工件)的大小出现了同样的情况,Quarkus 生成了更小的工件而再次领先。原生映像:75MB (Quarkus) 对 109MB (Spring Boot),以及JVM 版本: 4KB (Quarkus) 对 26MB (Spring Boot)。
关于其他指标,结论并不是那么显而易见。因此,我们需要更深入地了解一下。
CPU
我们看到 JVM 版本在预热阶段开始时消耗更多的 CPU。之后CPU使用率趋于稳定,所有版本的消耗相对均等。
以下是 JVM 和 Native 版本中 Quarkus 的 CPU 消耗:
JVM 版的 Quarkus ↑↑↑