Quarkus 性能
专为快速启动、高吞吐量和低资源消耗而设计
Quarkus 的设计理念是通过使用构建时优化和响应式核心来实现高效,从而实现快速启动时间、高吞吐量、低响应延迟、减少内存占用和最小资源消耗。 因此,Quarkus 速度很快...非常快。
通过减少工作量快速启动:构建时原则
Quarkus 重新定义了 Java 应用程序的构建和执行方式,将大部分工作转移到构建阶段,确保高成本的工作只发生一次——在构建过程中——而不是每次启动时。 这使得在 GraalVM 原生镜像和传统 JVM 部署上都能获得更快、更小、更高效的 Java 应用程序。
例如,在构建时,Quarkus 会读取部分应用程序配置,扫描类路径以查找带注解的类,并构建应用程序模型。 通过尽早执行此操作,Quarkus 有足够的信息来消除不必要的组件并计算所需的精确启动指令。


这种构建时优化提供了几个关键优势
- 减少启动时间:Quarkus 在构建时执行大部分繁重的工作,从而显著缩短了启动时间,并使应用程序能够更快地达到峰值性能。
- 更低的内存消耗:通过最大限度地减少分配和类加载,Quarkus 减少了内存使用量。 用构建时字节码生成代替反射进一步降低了 JVM 的运行时工作负载。
- 更好的延迟和更高的吞吐量:Quarkus 在构建时生成高度优化的代码,并修剪不必要的类和方法。 例如,它将间接层交织在一起,从而实现更好的 JIT 优化。 这些改进带来了更快的代码和更好的延迟。
无需头痛的高并发:响应式核心
Quarkus 基于响应式原则构建,使用基于 Netty 和 Eclipse Vert.x 的高效异步、非阻塞引擎。 它使用少量事件循环而不是大型线程池,从而减少了资源使用并优化了硬件行为,从而提高了响应时间。
底层响应式并不意味着您必须编写响应式代码。 Quarkus 提供三种开发模型
- 命令式模型:一种传统的同步方法,由于优化的 I/O 层而具有更快的执行速度,非常适合较低的并发性。 高并发会增加内存使用量。
- 响应式模型:使用异步、非阻塞代码实现高并发和最少的资源,但实现和调试起来更加复杂。
- 虚拟线程 (JDK 21+):结合了命令式和响应式模型的优点,允许命令式代码在轻量级虚拟线程上运行,以实现高并发和低内存开销,但仍存在一些限制。
持续测量,持续改进
Quarkus 致力于持续提高性能,特别是对于在关键执行(热)路径上运行的代码。 通过持续优化,Quarkus 确保每条指令和分配的字节都很重要,使其成为开发高性能、云就绪应用程序的最有效框架之一。