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
660
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
99
5 ways I screwed up Sol Trader's launch
chrismdp
0
160
Pathfinding Peril SPA 2016
chrismdp
0
200
Pathfinding Peril - BCS 2014
chrismdp
0
170
Separating allocation from code - NDC
chrismdp
0
150
Separating Allocation from Code
chrismdp
1
440
Extreme Isolation Workshop
chrismdp
1
130
Who's code is it anyway?
chrismdp
0
95
Extreme Isolation (Lightning talk)
chrismdp
1
150
Other Decks in Technology
See All in Technology
Automating Web Accessibility Testing with AI Agents
maminami373
0
1.2k
おやつは300円まで!の最適化を模索してみた
techtekt
PRO
0
290
LLMを搭載したプロダクトの品質保証の模索と学び
qa
0
1k
なぜテストマネージャの視点が 必要なのか? 〜 一歩先へ進むために 〜
moritamasami
0
200
allow_retry と Arel.sql / allow_retry and Arel.sql
euglena1215
1
160
[ JAWS-UG 東京 CommunityBuilders Night #2 ]SlackとAmazon Q Developerで 運用効率化を模索する
sh_fk2
3
360
Firestore → Spanner 移行 を成功させた段階的移行プロセス
athug
1
420
2025年になってもまだMySQLが好き
yoku0825
8
4.5k
「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド
zozotech
PRO
0
250
S3アクセス制御の設計ポイント
tommy0124
2
180
カミナシ社の『ID管理基盤』製品内製 - その意思決定背景と2年間の進化 #AWSUnicornDay / Kaminashi ID - The Big Whys
kaminashi
3
860
共有と分離 - Compose Multiplatform "本番導入" の設計指針
error96num
1
320
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
96
6.2k
Designing Experiences People Love
moore
142
24k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Why Our Code Smells
bkeepers
PRO
339
57k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Thoughts on Productivity
jonyablonski
70
4.8k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Code Reviewing Like a Champion
maltzj
525
40k
Mobile First: as difficult as doing things right
swwweet
224
9.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
YesSQL, Process and Tooling at Scale
rocio
173
14k
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