高性能 Ruby
在 GraalVM 的 Ruby 实现 TruffleRuby 上更快地运行您的 Ruby 代码
优势
更快地运行 Ruby 代码
对于许多 CPU 密集型基准测试,TruffleRuby 是最快的 Ruby 实现
并行执行 Ruby 代码
TruffleRuby 并行运行 Ruby 线程,它没有用于 Ruby 代码的全局解释器锁
支持 C 扩展
许多 C 扩展可以开箱即用,包括数据库驱动程序
与 Java、JavaScript、Python 和 R 的低开销互操作性
由 GraalVM 多语言 API 提供
保持与标准 Ruby 的高度兼容性
TruffleRuby 旨在与标准 Ruby 运行时 (MRI/CRuby) 完全兼容,并提供 JRuby 提供的额外功能
提供调试器和监控等工具
工具支持包括探查器、调试器、VisualVM 等等,并且跨语言工作
使用 TruffleRuby 和 GraalVM 加速 Ruby
Optcarrot 基准测试
TruffleRuby JVM CE 比 CRuby 3.0 快 4.2 倍,TruffleRuby JVM EE 比 CRuby 3.0 快 8.2 倍
Rubykon 基准测试
TruffleRuby JVM CE 比 CRuby 3.0 快 7.3 倍,TruffleRuby JVM EE 比 CRuby 3.0 快 10.6 倍
TruffleRuby 能够在 Shopify 几乎完全不修改标准 Ruby 配置的情况下运行关键生产 Ruby 应用程序,这使得它成为迁移到 Ruby 实现的唯一现实选择,该实现具有真正潜力,可以极大地提高 Ruby 的性能和工具。
尝试示例
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.java.net.cn/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 代码。
为现实世界应用程序带来改变
