Quarkus与Springboot性能对比

目前市场上主流的框架基本都是 Spring 全家桶系列, Srping 的生态完善也是众多开发者非常青睐这个框架的原因之一。但是我们今天主要从内存管理和性能方面看一下 QuarkusSpring Boot 的区别。

什么是 Quarkus ?

官网是这样定义的,Quarkus 是针对 Java 虚拟机 (JVM) 和本机编译的全栈 Kubernetes 本地 Java 框架,专门针对容器优化 Java ,使其成为无服务器,云和 Kubernetes 环境的有效平台。

构建程序

为了直观的比较两个框架的区别,这两个程序都将只引入 Spring Web 依赖。

构建 Quarkus 应用

我们可以在 Quarkus 官网构建我们的 Quarkus 应用,注意我们只选择了 Spring Web API 依赖。

506(1).jpg

下载代码用 IDE 打开之后,我们会发现有一个默认的 SpringGreetingController 类:

@RestController
@RequestMapping("/hello-spring")
public class SpringGreetingController {

    @GetMapping
    public String hello() {
        return "Hello Spring";
    }
}
复制代码

构建 Spring Boot 程序

Spring Boot 的构建方法就不用多说了,我们也只选了 Spring Web 依赖。

92445.jpg

我们修改一下 Spring 构建后的代码,添加 SpringGreetingController 至 Spring Boot 项目中。

性能比较

完成了上述工作,不知道你是否发现 Quarkus 并没有像 Spring Boot 一样的 Main 启动函数,也没有部署到Web容器。通过翻阅 Quarkus 官网的介绍,可以看到我们只需要这样一行命令来启动 Quarkus 程序: mvnw compile quarkus:dev。我们再使用 mvnw compile spring-boot:runspring boot 项目运行起来。

0838(1).jpg

我们使用 jdk 本身提供的 java 监测的 GUI 工具-- jconsole 来检测两个进程的性能情况。

Quarkus

概览

239fee4e568ac7166cc0c29655b60cc.png

f1ddabbb5232fcc4c3a9dcd498ba768.png

Spring Boot

概览

714adcc272e8585b8a9414bc6f3cf63.png

2ced6255ce08b73d3b467500823ff2a.png

两个应用程序的直接比较都表明 Quarkus 在启动应用程序时使用了更少的内存。 Spring Boot 使用的内存约为 145 Mb,而Quarkus的内存使用约为 122 Mb。而在类加载上 Quarkus 大约加载了 5303 个类,而 Spring Boot 大约加载了 4785 个类。

总结

测试结果和我在视频上看到的有一定出入,视频的测试结果是 Quarkus 性能远优于 Spring Boot 的。我的测试也只是给大家一个参考,动手能力强的可以自己去实践一下。

视频地址: Quarkus vs Spring Boot - Performance