Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The great Ruby Showdown
Search
chrismdp
February 22, 2012
Technology
2
600
The great Ruby Showdown
How do the different Rubies out there perform with a non trivial ruby application?
chrismdp
February 22, 2012
Tweet
Share
More Decks by chrismdp
See All by chrismdp
Why Rails is still relevant for startups in 2021
chrismdp
0
24
5 ways I screwed up Sol Trader's launch
chrismdp
0
140
Pathfinding Peril SPA 2016
chrismdp
0
130
Pathfinding Peril - BCS 2014
chrismdp
0
100
Separating allocation from code - NDC
chrismdp
0
130
Separating Allocation from Code
chrismdp
1
260
Extreme Isolation Workshop
chrismdp
1
99
Who's code is it anyway?
chrismdp
0
79
Extreme Isolation (Lightning talk)
chrismdp
1
130
Other Decks in Technology
See All in Technology
#phpconkagawa レガシーコードにもオブザーバビリティを 〜少しずつ始めるサービス監視〜
yamato_sorariku
0
550
開発スピードの維持向上を支える、テスト設計の 漸進的進化への取り組み / Continuous Test Design Development for Speed of Product Development
ropqa
0
180
Prisma ORMを2年運用して培ったノウハウを共有する
tockn
19
5k
[PyconUS 2024] Having fun with Pydantic and pattern matching
enforcerpl
0
170
エムスリーQAチーム紹介資料 / Introduction of M3 QA Team
m3_engineering
1
320
令和版ソフトウェアエンジニアの情報収集術 PHPカンファレンス香川2024
ysknsid25
4
880
生成AIと産業向けソフトウェアの自動生成 〜 ハノーバーメッセ2024より〜
kioto
2
420
拓展QA日常工作的邊界
line_developers_tw
PRO
0
550
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
0
2k
社内での継続的な機械学習勉強会の開催のコツ
yudai00
2
390
生成AI活用推進の為にやったこと/やらなかったこと
ktc_wada
0
170
テストコードを書きながらCompose Multiplatformを乗りこなす
subroh0508
0
140
Featured
See All Featured
What the flash - Photography Introduction
edds
64
11k
Raft: Consensus for Rubyists
vanstee
133
6.3k
How to train your dragon (web standard)
notwaldorf
75
5.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
84
45k
Happy Clients
brianwarren
92
6.4k
Six Lessons from altMBA
skipperchong
22
3k
Navigating Team Friction
lara
179
13k
The Mythical Team-Month
searls
217
42k
In The Pink: A Labor of Love
frogandcode
138
21k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
Gamification - CAS2011
davidbonilla
77
4.6k
The Art of Programming - Codeland 2020
erikaheidi
43
12k
Transcript
The great Ruby Showdown How do the different Rubies out
there perform with a non trivial ruby application? Chris Parsons - @chrismdp Wednesday, 22 February 12
Battleship http://github.com/ threedaymonk/ battleship Wednesday, 22 February 12
Only one round No display GuntherPlayer with fixed random seed
Running on 2009 MBP http://github.com/ chrismdp/battleship My changes Wednesday, 22 February 12
Fixed random seed doesn’t work! Different Rubies do random differently
Need to perform 50 ‘ticks’ instead Also different startup times was a headache Lessons Wednesday, 22 February 12
The players mri 1.8.7 mri 1.9.2 mri 1.9.3 jruby maglev
rubinius macruby Wednesday, 22 February 12
Ruby 1.8.7 • No show - code doesn’t work •
You shouldn’t be using it anyway • Ruby 1.9.2 has out and stable since summer 2010 Wednesday, 22 February 12
MacRuby 0.10 • Ruby based on the Objective-C Runtime •
Long startup time • 442.65s (!!) • 431.90s (!!) Wednesday, 22 February 12
Rubinius (head) • Used: RBXOPT=-X19 rbx -v (can default to
1.9 too) • Long startup time • 56.41s • 52.35s • 90.16s (!) • 94.67s (!!) • 63.07s - very variable! Wednesday, 22 February 12
Maglev (head) • Based on vm-ware’s GemStone virtual machine •
Can “transparently manage very large datasets” • 44.91s • 44.99s • 53.02s • 45.53s Wednesday, 22 February 12
Ruby 1.9.2 • The ‘standard’ during the tournament • Was
focused on a ‘complete’ version of ruby 1.9 • 28.50s • 28.74s • 28.51s • 28.97s Wednesday, 22 February 12
Jruby (1.9) • A number of changes needed to the
app Not an ‘out the box’ change, but still worked after tweaks. • Used: JRUBY_OPTS='--1.9 --server -J-Xmx1024m' • Long startup time: ~ 20-30 seconds • 25.93s • 25.05s • 27.60s • 26.26s Wednesday, 22 February 12
Ruby 1.9.3 • Better GC - doesn’t stop the world
for as long • Focused on a better implementation rather than compliance • 23.64s • 23.80s • 26.30s • 24.67s Wednesday, 22 February 12
The Obligatory Graph mri 1.9.3 JRuby 1.9 mri 1.9.2 Maglev
Rubinius mri 1.8.7 0 20 40 60 80 (lower is better) Wednesday, 22 February 12
The Obligatory Graph mri 1.9.3 JRuby 1.9 mri 1.9.2 Maglev
Rubinius MacRuby 10 mri 1.8.7 0 125 250 375 500 (lower is better) Wednesday, 22 February 12
Conclusions Wednesday, 22 February 12
Use 1.9.3 Wednesday, 22 February 12
JRuby 1.9 Slow to start, but just as good Wednesday,
22 February 12
MRI 1.9.2 Ultra-stable Wednesday, 22 February 12
MacRuby Rubinius Need work Wednesday, 22 February 12
Maglev The new kid Looks promising Wednesday, 22 February 12
~ The End ~ Chris Parsons @chrismdp Wednesday, 22 February
12