成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Graalvm 替代 JVM 真的可以帶來巨大的性能優勢嗎?

開發
在本篇文章中,我們將對各種 Java 應用程序的性能進行比較分析,評估它們在 JVM 和 GraalVM 環境中的執行情況。

介紹

Spring Boot有助于輕松開發獨立的、可用于生產的 Spring 應用程序。它對 Spring 平臺和第三方庫采用固執己見的方法:以最少的配置簡化設置過程。優勢:

  • 易于使用:Spring Boot 簡化了獨立 Spring 應用程序的創建,無需復雜的配置。
  • 嵌入式服務器:它允許直接嵌入 Tomcat、Jetty 或 Undertow 等服務器,從而無需單獨部署 WAR 文件。
  • Starter 依賴項:Spring Boot 提供預配置的“starter”依賴項,降低了構建配置的復雜性。
  • 自動配置:Spring Boot 自動配置 Spring 和第三方庫,最大限度地減少手動設置工作。
  • 生產就緒功能:它提供生產就緒功能,例如指標、運行狀況檢查和外部化配置,確保應用程序穩健且可擴展。
  • 無需代碼生成或 XML 配置:Spring Boot 運行時無需生成任何代碼,無需 XML 配置文件,從而提高了開發效率。

在常見的部署中,用 Java 編寫的 Spring Boot 應用程序被編譯成默認在 Java 虛擬機 (JVM) 中運行的字節碼。還有另一種鮮為人知的運行 Java 應用程序的方式:Native application

GraalVM通過提前將 Java 應用程序編譯成緊湊的獨立二進制文件,徹底改變了 Java 應用程序。這些二進制文件展現出明顯的優勢,啟動速度比傳統 Java 應用程序快近 100 倍。它們無需預熱即可提供峰值性能,同時與 Java 虛擬機 (JVM) 同類產品相比,消耗的內存和 CPU 資源顯著減少。

GraalVM 并不局限于理論創新領域;它受到 Spring Boot、Micronaut、Helidon 和 Quarkus 等主要微服務框架的支持。此外,Oracle Cloud Infrastructure、Amazon Web Services、Google Cloud Platform 和 Microsoft Azure 等領先的云平臺完全支持 GraalVM 集成。

通過利用配置文件引導的優化和先進的 G1(垃圾優先)垃圾收集器,GraalVM 使我們的應用程序具有更低的延遲。事實上,它提供的性能指標與在 Java 虛擬機 (JVM) 上運行的應用程序的性能指標相當或更強。這種速度、效率和安全性的卓越結合使 GraalVM 成為現代 Java 開發的改變游戲規則的選擇。

過去,有很多使用 GraalVM 對 Java 應用程序進行基準測試的請求,期望 GraalVM 能夠超越傳統的 Java 虛擬機 (JVM)。

在本篇文章中,我們將對各種 Java 應用程序的性能進行比較分析,評估它們在 JVM 和 GraalVM 環境中的執行情況。

我們將通過在 JVM(Java 虛擬機)和 GraalVM 上執行基本的“hello world”應用程序進行比較分析。通過這個比較,我們旨在探索 GraalVM 相對于傳統 JVM 的優越性能。

測試設置

所有測試均在具有 16G RAM 的 MacBook M1 上執行。軟件版本有:

  • JDK 21
  • Graalvm JDK 21
  • SpringBoot 3.1.4

應用程序代碼是一個包含單個路由的簡單文件:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.http.ResponseEntity;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("/")
    public String handleRequest() {
        return "Hello World!";
    }
}

為了構建原生鏡像,我們使用了 MVN 的原生插件:

<?xml version="1.0" encoding="UTF-8"?>
<project
 xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>3.1.4</version>
  <relativePath/>
  <!-- lookup parent from repository -->
 </parent>
 <groupId>com.example</groupId>
 <artifactId>demo</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>demo</name>
 <description>Demo project for Spring Boot</description>
 <properties>
  <java.version>21</java.version>
 </properties>
 <dependencies>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
  </dependency>
 </dependencies>
 <build>
  <plugins>
   <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
     <mainClass>com.example.demo.DemoApplication</mainClass>
     <layout>JAR</layout>
    </configuration>
   </plugin>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.5.0</version>
    <executions>
     <execution>
      <phase>package</phase>
      <goals>
       <goal>shade</goal>
      </goals>
     </execution>
    </executions>
   </plugin>
  </plugins>
 </build>
 <profiles>
  <profile>
   <id>native</id>
   <build>
    <plugins>
     <plugin>
      <groupId>org.graalvm.buildtools</groupId>
      <artifactId>native-maven-plugin</artifactId>
      <version>0.9.27</version>
      <extensions>true</extensions>
      <executions>
       <execution>
        <id>build-native</id>
        <goals>
         <goal>compile-no-fork</goal>
        </goals>
        <phase>package</phase>
       </execution>
       <execution>
        <id>test-native</id>
        <goals>
         <goal>test</goal>
        </goals>
        <phase>test</phase>
       </execution>
      </executions>
      <configuration>
       <!-- ... -->
      </configuration>
     </plugin>
    </plugins>
   </build>
  </profile>
 </profiles>
</project>

原生二進制大小約為76M:

76M /Users/mayankc/Work/source/perfComparisons/java/springboot/target/demo

結果

每個包含500萬個請求的測試分別針對50、100和300個并發連接執行。對于負載測試,我們使用了 Bombardier 測試工具。

以下是表格形式的測試結果:

統計

為了更直觀的展示測試結果,我們使用以下公式從結果中生成記分卡。對于每一個測量,結果獲勝的按照領先度得分:

  • <5%,不給分
  • 5%到20%之間,獲勝者得1分
  • 20%到50%之間,獲勝者得2分
  • >50%,獲勝者得3分

以下是評分結果:

結論

選擇一個簡單的 hello world 案例可能不是真正釋放 GraalVM 或本機代碼編譯潛力的最合適場景。本地運行的相同 SpringBoot 應用程序的性能并沒有明顯優于其 JVM 對應項。GraalVM 唯一顯著的優勢在于其對內存的高效利用。

本文僅從性能方面對 GraalVM 和 傳統 JVM 做了比較,參考以上測試結果,如果我們想要優化程序啟動速度和對內存的利用率方面,GraalVM 會是更好的選擇,至于其他性能指標,優勢并不明顯!

隨著 GraalVM 在國內的推廣和應用越來越廣泛,相信它將會在未來的軟件開發領域發揮越來越重要的作用,我們期待它之后的表現!

責任編輯:張燕妮 來源: 互聯網架構小馬哥
相關推薦

2022-09-07 10:03:16

物聯網450MHz

2021-01-08 10:14:54

首席信息官IT技術

2014-04-01 11:06:46

VDI虛擬化

2015-04-28 13:56:00

JavaJava優勢跨平臺

2013-07-15 10:20:17

BGP協議BGP機房BGP

2012-07-20 09:37:00

Oracle LinuCentOS

2012-12-14 01:52:49

JVM淘寶JVMtaobao jvm

2020-08-03 10:11:04

物聯網人工智能技術

2022-08-22 15:32:59

C++C代碼

2020-05-11 20:16:03

無人駕駛AI人工智能

2014-02-21 15:17:23

云存儲Time Machin

2014-11-28 16:04:36

浪潮

2022-12-12 10:18:14

數字化轉型醫療保健

2012-07-10 10:08:52

2012-05-03 11:09:25

云計算集成

2023-02-22 09:47:40

查詢計算

2017-09-18 09:05:24

ConstraintL編輯器測量

2009-10-19 14:02:08

戴爾Windows 7

2010-02-06 13:54:23

Android手機

2012-08-21 09:34:46

蘋果電視Apple TV
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一二三区 | 久久99精品久久久久久国产越南 | 亚洲精品www | 国产精品免费福利 | 第一区在线观看免费国语入口 | 久久久高清| 日韩视频免费 | 97人人草| 久久久久国产精品午夜一区 | 日韩三级免费网站 | gav成人免费播放视频 | 久久一区视频 | 国产精品视频免费观看 | av在线电影网 | 亚洲视频国产视频 | 人人爽人人爽 | 国产欧美精品一区二区色综合 | 精品视频在线观看 | 精品真实国产乱文在线 | 中文字幕日韩欧美一区二区三区 | 久久精品欧美一区二区三区不卡 | 视频精品一区 | 91精品国产91久久综合桃花 | 日韩精品 电影一区 亚洲 | 久久综合香蕉 | 欧美在线a | 国产精品a久久久久 | 亚洲一区 中文字幕 | 国产欧美性成人精品午夜 | 精品永久| 久久久久久综合 | 国产精品色哟哟网站 | 国产一级影片 | 成人一区二区三区在线观看 | 午夜免费在线观看 | 亚州av | 日本在线免费视频 | 亚洲国产精品视频 | 久久综合国产精品 | 黑人巨大精品 | 一级片网址 |