高效能 Ruby

在 GraalVM 的 Ruby 實作 TruffleRuby 上更快地執行您的 Ruby 程式碼

優點

small footprint advantage icon

更快地執行 Ruby 程式碼

TruffleRuby 是許多 CPU 密集型基準測試中最快的 Ruby 實作
improved security advantage icon

並行執行 Ruby 程式碼

TruffleRuby 並行執行 Ruby 執行緒,它沒有針對 Ruby 程式碼的全域直譯器鎖定
fast startup advantage icon

支援 C 擴充功能

許多 C 擴充功能開箱即用,包括資料庫驅動程式
ideal for containers advantage icon

與 Java、JavaScript、Python 和 R 的低開銷互通性

由 GraalVM Polyglot API 提供
microservices advantage icon

維持與標準 Ruby 的高度相容性

TruffleRuby 的目標是與標準 Ruby 執行階段(MRI/CRuby)完全相容,同時提供 JRuby 的額外功能
clouds advantage icon

提供除錯器和監控等工具

工具支援包括分析器、除錯器、VisualVM 等,並且跨語言工作

使用 TruffleRuby 和 GraalVM 加快 Ruby 速度

Optcarrot 基準測試

TruffleRuby JVM CE 比 CRuby 3.0 快 4.2 倍,而 TruffleRuby JVM EE 比 CRuby 3.0 快 8.2 倍
optcarrot benchmark

Rubykon 基準測試

TruffleRuby JVM CE 比 CRuby 3.0 快 7.3 倍,而 TruffleRuby JVM EE 比 CRuby 3.0 快 10.6 倍
rubykon benchmark
box

TruffleRuby 能夠幾乎完全未修改地執行 Shopify 的一個重要的生產 Ruby 應用程式,這使其成為遷移到 Ruby 實作的唯一現實選擇,該實作具有真正提高 Ruby 效能和工具的潛力。

box
Chris Seaton
Shopify 資深工程師

嘗試範例

require 'sinatra'
  require 'some-c-extension'
  get '/' do
    CExtensions.work!
  end

執行您現有的程式碼,包括原生擴充功能,而無需更改

TruffleRuby 執行 Rails,並且是除了 CRuby 之外唯一通過所有 RubyGems 測試的實作。
array = Java.type('int[]').new(4)
  array[2] = 42
  p array[2]

從 Ruby 存取 Java

重複使用任何 JVM 函式庫。
$ ruby --cpusampler app.rb
Name                       | Total Time |Opt%||  Self Time |Opt%
----------------------------------------------------------------
Optcarrot::PPU#main_loop   |3372ms 64.5%| 98%||1991ms 38.1%| 99%
Optcarrot::PPU#render_pixel| 309ms  5.9%| 80%|| 309ms  5.9%| 80%

$ ruby --inspect app.rb
Debugger listening on ws://127.0.0.1:9229/...
For help, see: https://graalvm.dev.org.tw/docs/tools/chrome-debugger
E.g. in Chrome open: devtools://devtools/bundled/js_app.html?ws=127.0.0.1:9229/...

包含內建取樣分析器和除錯器

以及 VisualVM、Flamegraphs 等。

  $ ruby -ropen-uri -e 'URI.open("https://expired.badssl.com/", &:read)'
  cext.rb:1096:in `rb_exc_raise': certificate has expired (OpenSSL::SSL::SSLError)
  from openssl/ossl.c:300:in `ossl_raise'
  from openssl/ossl_ssl.c:1697:in `ossl_start_ssl'
  from openssl/ossl_ssl.c:1755:in `ossl_ssl_connect_nonblock'
  from net/protocol.rb:44:in `ssl_socket_connect'
  from net/http.rb:1021:in `connect'
  from ...
  from -e:1:in `main'
  

C 擴充功能中的回溯

GraalVM 可以同時執行和編譯 Ruby 和 C 程式碼。

為現實世界應用帶來改變

使用 TruffleRuby 在 GraalVM 上更快地執行 Rack 和 Rails

使用即時 (JIT) 編譯器最佳化 Rack 和 Rails 應用程式是一個挑戰。 例如,MJIT 目前並未加速 Rails。 GraalVM 團隊接受了這個挑戰,現在 TruffleRuby 在 Rails Simpler 基準測試中實現了比任何其他 Ruby 實作更高的效能。 了解 TruffleRuby 是如何實現的,以及哪些最佳化對 Rack 和 Rails 應用程式有用。

為您的 Ruby 應用程式嘗試 GraalVM

與我們聯繫