Java 虛擬機 OpenJ9 和 Hotspot 的 Benchmark 測試

2020-12-17 開源中國

IBM 開源了它開發的 J9 Java 虛擬機 (JVM),並將其貢獻給了 Eclipse 基金會,重命名為 Eclipse OpenJ9。J9 是一個高性能可伸縮的 Java 虛擬機,是許多 IBM 企業級軟體產品的核心,OpenJ9 可作為 Hotspot 的替代者用於 OpenJDK,比如需要高性能的企業級運行時環境。

那麼,這個 Eclipse OpenJ9 Java 虛擬機的性能到底如何?日前,有開發者運行了一些快速的 Benchmark 測試來和 Java 虛擬機 Hotspot 進行比較,以了解其性能。

測試者在兩臺 Linux 設備上進行測試,他將 OpenJ9 與 OpenJDK 9 打包在一起,將其性能與現有的 OpenJDK 9 Hotspot 構建版本進行比較。另外,還有一個參考的標準是 OpenJDK 8 Hotspot 的構建版本。這三個構建文件都是從它們的預構建二進位包頁面獲得的。

用於本次快速 Benchmark 測試的系統之一是基於 Intel Core i9 7900X,採用 Linux Kernel 4.13,運行 Ubuntu 17.04 的系統。

而另一個系統是使用有 Xeon Gold 6138 處理器並運行 Debian GNU/Linux 9.1 的雙插槽 Tyan 伺服器。

分別在兩個系統上,測試了三個 OpenJDK 版本,並通過 Phoronix 測試套件運行了一些可用的 Java Benchmark 測試。

先來看看在 Core i9 7900X 上,本次 Hotspot/OpenJ9 測試的結果:

首先是使用 j2dbench 進行一些圖形方面的基準測試。使用 OpenJ9 時,文本渲染速度明顯較慢,而 Hotspot 在其他兩次測試中表現相似。在 OpenJDK 8 和 9 之間也不是有很大的區別。J2dbench 是 Sun Microsystems 為 Phoronix 測試套件貢獻的 Java 圖形基準測試工具之一。

使用 Java 版的 SciMark2 進行一些數學運算基準測試

可以看到,至少到目前為止,OpenJ9 的性能大部分是落後於 Hotspot 的。

基於 Java 的 Bork 文件加密工具測試,可以看到 Hotspot 依然更快

JMH 測試中,它們之間的表現不相上下

Sunflow 基準測試中,Hotspot 依然更快

來自另一個系統的 Hotspot/OpenJ9 Benchmark 測試結果與 Core i9 測試的大致相似:

作為一個開源的 JVM 項目,OpenJ9 還處於初期階段,應該在幾個月後再運行一次測試,看看性能比較如何,請保持關注。

來自:https://www.phoronix.com/scan.php?page=article&item=openj9-jvm-benchmark

相關焦點

  • OpenJdk1.8筆記——java啟動流程
    Jdk中java的入口函數文件為openjdk\jdk\src\share\bin\main.c中的main方法(window上為WinMain),然後調用jdk8u-dev/jdk/src/share/bin/java.c的JLI_Launch方法,啟動一個jvm虛擬機;程序入口
  • JAVA應用可視化診斷工具
    相當於可視化的jstat命令監控區域有PS Eden SpacePS Survivor SpacePS Old SpaceMetaspaceCode CacheCompressed Class Space2.線程監控:相當於可視化的jstack命令JHSDB:基於服務性代理的調試工具(java9
  • 深入分析Java虛擬機堆和棧及OutOfMemory異常產生原因
    前言JVM系列文章如無特殊說明,一些特性均是基於Hot Spot虛擬機和JDK1.8版本講述。類文件包含Java虛擬機指令(或字節碼)和符號表,以及其他輔助信息。也就是說,我們寫好的程序最終交給JVM執行的時候會被編譯成為二進位格式。注意:Java虛擬機只認二進位格式文件,所以,任何語言,只要編譯之後的格式符合要求,都可以在Java虛擬機上運行,如Kotlin,Groovy等。
  • 深入理解Java虛擬機:類加載機制
    虛擬機把描述類的數據從Class文件加載到內存,並對數據進行校驗,解析和初始化,最終形成可以被虛擬機直接使用的Java類型。一、類的生命周期二、類加載時機必須對類進行"初始化"的情況:使用new關鍵字實例化對象的時候讀取或設置一個類型的靜態欄位(被final修飾、已在編譯期把結果放入常量池的靜態欄位除外)的時候。
  • 深入理解JAVA虛擬機學習筆記7——HotSpot的算法實現
    虛擬機是怎麼做的呢?使用一組OopMap來記錄對象在棧中的引用地址,這樣,HotSpot就可以快速找到GC Roots的對象集合。(Oop:Ordinary Object Pointer,普通對象指針)另外,如果在進行判斷分析的時候,有新的引用產生怎麼辦呢?
  • 學習筆記 | Java虛擬機第一篇
    大體上,虛擬機可以分為系統虛擬機和程序虛擬機。大名鼎鼎的Virsual Box,VMware就屬於系統虛擬機,它們完全是對物理計算機的仿真,提供了一個可運行完整作業系統的軟體平臺。程序虛擬機的典型代表就是Java虛擬機,它專門為執行單個電腦程式而設計,在Java虛擬機中執行的指令我們稱為Java字節碼指令。
  • HotSpot虛擬機對象大揭秘
    1對象的創建虛擬機遇到一條new指令時,首先將去檢查這個指令的參數是否能在常量池中定位到一個類的符號引用,並且檢查這個符號引用代表的類是否已被加載,解析和初始化過。如果沒有,那必須先執行響應的類加載過程。對象所需內存的大小在類加載完成後便可完全確定,為對象分配空間的任務等同於把一塊確定大小的內存從Java堆中劃分出來。
  • 「原創」JVM系列02|Java虛擬機結構
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫Java虛擬機學習 Java 虛擬機,先要掌握其基本結構,了解各部分有什麼作用,各部分之間是如何協調工作的。
  • Java synchronized 詳解
    frame_type = 255 /* full_frame */          offset_delta = 9          locals = [ class SynchronizedTest, class java/lang/Object ]          stack = [ class java/lang/Throwable ]
  • Java虛擬機系列一:一文搞懂 JVM 架構和運行時數據區
    接下來一段時間我會把寫博客的重點放在 JVM (Java Virtual Machine) 和 JUC (java util concurrent ) 上,對 Java 虛擬機和 Java 並發編程進行一系列的介紹,歡迎關注。了解 JVM 是對 Java 開發人員的基本要求,JVM 的相關內容自然也成了現在 Java 程式設計師面試的重要考點。
  • JMH基準測試入門配置及示例
    JMH是一個用於構建,運行和分析基於Java及其他JVM語言的基準測試工具。它也是OpenJDK項目的一部分。要運行JMH基準測試,推薦的方法是使用Maven來構建一個測試項目。生成相關的依賴信息,以及簡單的測試骨架代碼。由於這種方式比較純粹,項目是全新的、自動生成的,不受其他環境的影響,因此比較可靠。
  • 一篇文章全面吃透Java虛擬機,線程安全的實現方法
    由於java虛擬機的多線程是通過線程輪流切換並分配處理器執行時間的方式來實現的,所以,為了線程切換後能恢復到正確的執行位置,每條線程都需要有一個獨立的程序計數器,各條線程之間計數器互不影響,獨立存儲,所以我們說,它是線程私有的.
  • Android虛擬機之 ART
    而且 JVM 是基於棧的虛擬機,而 Android 是基於寄存器的虛擬機上面提到棧和寄存器虛擬機,那麼它倆有什麼區別呢?  基於棧虛擬機讀取指令是在內存上工作的,而寄存器讀取指令則是在高速緩存區(寄存器)上工作,CPU 直接操作,執行更快。棧虛擬機更不依賴於硬體,而寄存器虛擬機會根據硬體來進行優化,所以不適合多平臺移植。並且如果做同一個操作,棧的指令比寄存器的指令更多。
  • Graphcore IPU-M2000在首個benchmark測試中顯著優於GPU
    Graphcore IPU-M2000在首個benchmark測試中顯著優於GPU Graphcore 發表於 2020-12-10 09:39:55 Graphcore
  • 精通Java虛擬機必讀書籍推薦書單
    以實踐為導向,通過大量與實際生產環境相結合的案例展示了解決各種常見JVM問題的技巧和最佳實踐書單2:深入理解JVM & G1 GC虛擬機的學習變得更加簡單和有趣,而且能讓你對Java虛擬機的原理認識更深入和更深刻!
  • 九年程式設計師推薦java書籍
    首先知乎爬取了以 #java# 為關鍵詞的三千本書,然後去除評分在7.5以下和評論人數少於150人次的書籍,最終得到以下篩選出以下結果.我將以評論人數排行榜&評分排行榜&綜合排行榜,進行書單的展示!並且你可以通過點擊書名,直接進入豆瓣查看該書的相關信息.
  • JAVASE -- 語言概述和JAVA
    開發既然是個過程,這個過程可以分為如下幾個步驟:①需求分析和調研、②需求設計、③編碼、④測試、⑤後期維護。1.3、什麼是軟體開發從開始和客戶談需求,寫需求文檔,設計文檔,程式設計師編碼,項目測試,整個過程即就是軟體開發。
  • Oracle獨家:Java虛擬機學習指南
    大家好,我是極客時間《深入拆解 Java 虛擬機》作者、Oracle Labs 高級研究員鄭雨迪。有幸借這個專題的機會,能和大家分享為何 Java 工程師要學 Java 虛擬機?如何掌握 Java 虛擬機?
  • Abiword HTML Document Graphcore IPU-M2000在首個benchmark測試...
    【TechWeb】12月10日消息,Graphcore為其最新的AI計算系統——IPU-M2000和縱向擴展的IPU-POD64發布了第一套性能benchmark。以下為具體內容。在各種流行的模型中,Graphcore技術在訓練和推理方面均顯著優於NVIDIA的A100(基於DGX)。
  • 教程 | Mac平臺配置C/Python/Java學習環境
    在終端中進行查看:輸入gcc -v指令測試gcc命令是否可用並查看其版本,由上圖輸出可以看到,該命令可用,版本信息顯示的則是clang的信息。一般來說,剛學習C語言無需關注兩者的異同。配置VSCodeVSCode是由微軟主導開發的一款開源免費、輕巧簡單、功能強大的代碼編輯器。配合各式各樣的插件可以方便地實現各種你想得到和你想不到的功能。