OpenJ9 和 HotSpot 的對比 Part 2

簡介

上午從內存

速度這兩個維度比較了不同的 JDK 版本以及 OpenJ9 vs HotSpot。如果你問我,一個實際工作的服務於 REST 對象的 Spring Boot 應用程序,所測試的內存部分是真實的。

速度/CPU 測試依然...缺失。因為排序一些隨機數組只是其中一個特定的測試。

今天我決定對 OpenJ9 和 Hotspot 用一個實際的基準測試進行更多的測試:SPECjvm2008。

SPECjvm2008

SPEC(標準性能評估公司)有幾個定義良好的基準和測試,其中包括一個名為 SPECjvm2008 的老版 JVM 基準測試。這是一個詳盡的基準測試事項,如壓縮、編譯、XML 解析等等。我決定下載這個並且給它一個與 OpenJ9 和 HotSpot 的開關。這應該是一個更公正的比較。

最初我遇到了一些問題,其中一些測試對 Java 8 不起作用,並且有些測試甚至不能在 Java 9+ 上啟動。但最終我通過使用以下參數剔除了幾個基準並使其正常工作:

java -jar SPECjvm2008.jar startup.helloworld startup.compiler.compiler startup.compress startup.crypto.aes startup.crypto.rsa startup.crypto.signverify startup.mpegaudio startup.scimark.fft startup.scimark.lu startup.scimark.monte_carlo startup.scimark.sor startup.scimark.sparse startup.serial startup.sunflow startup.xml.validation compiler.compiler compress crypto.aes crypto.rsa crypto.signverify derby mpegaudio scimark.fft.large scimark.lu.large scimark.sor.large scimark.sparse.large scimark.fft.small scimark.lu.small scimark.sor.small scimark.sparse.small scimark.monte_carlo serial sunflow xml.validation

測試

這些測試中使用的 Docker 鏡像都是 OpenJDK8 和 Java 8,但其中一個帶有

HotSpot,另一個帶有 OpenJ9。

  • adoptopenjdk/openjdk8
  • adoptopenjdk/openjdk8-openj9

我再次啟動 Docker 鏡像,目錄鏈接到包含 SPEC 基準的主機:

  • 啟動鏡像:
docker run -it -v /Projects/SPECjvm2008:/app/SPECjvm2008 adoptopenjdk/openjdk8-openj9 /bin/bash
  • 進入正確目錄:
cd /app/SPECjvm2008
  • 運行(工作)測試:
java -Xmx600m -jar SPECjvm2008.jar startup.helloworld startup.compiler.compiler startup.compress startup.crypto.aes startup.crypto.rsa startup.crypto.signverify startup.mpegaudio startup.scimark.fft startup.scimark.lu startup.scimark.monte_carlo startup.scimark.sor startup.scimark.sparse startup.serial startup.sunflow startup.xml.validation compiler.compiler compress crypto.aes crypto.rsa crypto.signverify derby mpegaudio scimark.fft.large scimark.lu.large scimark.sor.large scimark.sparse.large scimark.fft.small scimark.lu.small scimark.sor.small scimark.sparse.small scimark.monte_carlo serial sunflow xml.validation

測試結果

在等待了很長一段時間之後,基準結束,我得到了下列結果。

OpenJ9 和 HotSpot 的對比 Part 2

這個表衡量值是 ops/m,越高代表越好。根據硬件不同,結果可能會有所不同。

在大多數情況下,HotSpot 比 OpenJ9 更快,在 crypto derby 兩種情況下,HotSpot 速度更快。看起來這是 HotSpot 正在做一些特別的事情,而 J9(還)沒有做?這對了解您是否正在處理大量密碼學應用程序非常重要,例如高性能安全端點。

一個能讓 OpenJ9 排第一的是 XML 校驗。解析與校驗也是大多數現代應用程序中的重要組成部分,所以這可能是 J9 在實際生產代碼中的彌補了一些損失。

結論

這樣就能得到一個真正的結論嗎?我不這麼認為。

真正的教訓是:通過實驗、測量,你將會知道,從來不能基於一些在線的基準來決定什麼。


分享到:


相關文章: