AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Graalvm 替代 JVM 真的可以帶來巨大的性能優(yōu)勢嗎?

來源: 責編: 時間:2023-12-25 17:29:27 258觀看
導讀介紹Spring Boot有助于輕松開發(fā)獨立的、可用于生產的 Spring 應用程序。它對 Spring 平臺和第三方庫采用固執(zhí)己見的方法:以最少的配置簡化設置過程。優(yōu)勢:易于使用:Spring Boot 簡化了獨立 Spring 應用程序的創(chuàng)建,無需復

介紹

Spring Boot有助于輕松開發(fā)獨立的、可用于生產的 Spring 應用程序。它對 Spring 平臺和第三方庫采用固執(zhí)己見的方法:以最少的配置簡化設置過程。優(yōu)勢:u5t28資訊網——每日最新資訊28at.com

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

在常見的部署中,用 Java 編寫的 Spring Boot 應用程序被編譯成默認在 Java 虛擬機 (JVM) 中運行的字節(jié)碼。還有另一種鮮為人知的運行 Java 應用程序的方式:Native applicationu5t28資訊網——每日最新資訊28at.com

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

GraalVM 并不局限于理論創(chuàng)新領域;它受到 Spring Boot、Micronaut、Helidon 和 Quarkus 等主要微服務框架的支持。此外,Oracle Cloud Infrastructure、Amazon Web Services、Google Cloud Platform 和 Microsoft Azure 等領先的云平臺完全支持 GraalVM 集成。u5t28資訊網——每日最新資訊28at.com

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

過去,有很多使用 GraalVM 對 Java 應用程序進行基準測試的請求,期望 GraalVM 能夠超越傳統(tǒng)的 Java 虛擬機 (JVM)。u5t28資訊網——每日最新資訊28at.com

在本篇文章中,我們將對各種 Java 應用程序的性能進行比較分析,評估它們在 JVM 和 GraalVM 環(huán)境中的執(zhí)行情況。u5t28資訊網——每日最新資訊28at.com

我們將通過在 JVM(Java 虛擬機)和 GraalVM 上執(zhí)行基本的“hello world”應用程序進行比較分析。通過這個比較,我們旨在探索 GraalVM 相對于傳統(tǒng) JVM 的優(yōu)越性能。u5t28資訊網——每日最新資訊28at.com

測試設置

所有測試均在具有 16G RAM 的 MacBook M1 上執(zhí)行。軟件版本有:u5t28資訊網——每日最新資訊28at.com

  • JDK 21
  • Graalvm JDK 21
  • SpringBoot 3.1.4

應用程序代碼是一個包含單個路由的簡單文件:u5t28資訊網——每日最新資訊28at.com

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@RestControllerpublic class DemoApplication {    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);    }    @GetMapping("/")    public String handleRequest() {        return "Hello World!";    }}

為了構建原生鏡像,我們使用了 MVN 的原生插件:u5t28資訊網——每日最新資訊28at.com

<?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:u5t28資訊網——每日最新資訊28at.com

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

結果

每個包含500萬個請求的測試分別針對50、100和300個并發(fā)連接執(zhí)行。對于負載測試,我們使用了 Bombardier 測試工具。u5t28資訊網——每日最新資訊28at.com

以下是表格形式的測試結果:u5t28資訊網——每日最新資訊28at.com

u5t28資訊網——每日最新資訊28at.com

u5t28資訊網——每日最新資訊28at.com

u5t28資訊網——每日最新資訊28at.com

統(tǒng)計

為了更直觀的展示測試結果,我們使用以下公式從結果中生成記分卡。對于每一個測量,結果獲勝的按照領先度得分:u5t28資訊網——每日最新資訊28at.com

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

以下是評分結果:u5t28資訊網——每日最新資訊28at.com

u5t28資訊網——每日最新資訊28at.com

結論

選擇一個簡單的 hello world 案例可能不是真正釋放 GraalVM 或本機代碼編譯潛力的最合適場景。本地運行的相同 SpringBoot 應用程序的性能并沒有明顯優(yōu)于其 JVM 對應項。GraalVM 唯一顯著的優(yōu)勢在于其對內存的高效利用。u5t28資訊網——每日最新資訊28at.com

本文僅從性能方面對 GraalVM 和 傳統(tǒng) JVM 做了比較,參考以上測試結果,如果我們想要優(yōu)化程序啟動速度和對內存的利用率方面,GraalVM 會是更好的選擇,至于其他性能指標,優(yōu)勢并不明顯!u5t28資訊網——每日最新資訊28at.com

隨著 GraalVM 在國內的推廣和應用越來越廣泛,相信它將會在未來的軟件開發(fā)領域發(fā)揮越來越重要的作用,我們期待它之后的表現!u5t28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-54021-0.htmlGraalvm 替代 JVM 真的可以帶來巨大的性能優(yōu)勢嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python Selenium實現自動化測試及Chrome驅動使用!

下一篇: 基于Go-Kit的Golang整潔架構實踐

標簽:
  • 熱門焦點
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • 從 Pulsar Client 的原理到它的監(jiān)控面板

    背景前段時間業(yè)務團隊偶爾會碰到一些 Pulsar 使用的問題,比如消息阻塞不消費了、生產者消息發(fā)送緩慢等各種問題。雖然我們有個監(jiān)控頁面可以根據 topic 維度查看他的發(fā)送狀態(tài),
  • 不容錯過的MSBuild技巧,必備用法詳解和實踐指南

    一、MSBuild簡介MSBuild是一種基于XML的構建引擎,用于在.NET Framework和.NET Core應用程序中自動化構建過程。它是Visual Studio的構建引擎,可在命令行或其他構建工具中使用
  • 得物效率前端微應用推進過程與思考

    一、背景效率工程隨著業(yè)務的發(fā)展,組織規(guī)模的擴大,越來越多的企業(yè)開始意識到協(xié)作效率對于企業(yè)團隊的重要性,甚至是決定其在某個行業(yè)競爭中突圍的關鍵,是企業(yè)長久生存的根本。得物
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優(yōu)雅、泛用的函數。本文將首先介紹柯里化和反柯里化的概念、實現原理和應用
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業(yè) 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁&ldquo;充值中心&rdquo;入口上線了本機生活界面。壹覽商業(yè)發(fā)現,該界面目前主要
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風頭無兩。你可以說陳思誠的
  • 華為Mate 60系列用上可變靈動島:正式版體驗將會更出色

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強5G Soc

    去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,iQOO 11不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競屏,同時在快充
Top