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
17
5 ways I screwed up Sol Trader's launch
chrismdp
0
130
Pathfinding Peril SPA 2016
chrismdp
0
120
Pathfinding Peril - BCS 2014
chrismdp
0
95
Separating allocation from code - NDC
chrismdp
0
130
Separating Allocation from Code
chrismdp
1
250
Extreme Isolation Workshop
chrismdp
1
98
Who's code is it anyway?
chrismdp
0
79
Extreme Isolation (Lightning talk)
chrismdp
1
120
Other Decks in Technology
See All in Technology
Tohoku.Tech #1 「Cursorを使ったRaspberry Piの開発」by ねこまた
jun2882
0
140
App Runnerでパラメーターストアの値を使ってみた
miura55
0
230
UIからの自動テスト事例
tomasagi
8
3.3k
SecurityCamp2023基板作るコース講義資料/Security Camp 2023 Lecture Materials
tnishinaga
5
1.3k
書を捨てよ、現場へ出よう
nwiizo
11
8.7k
ChatGPTのLT会-メモソフトにChatGPT入れると結構便利
okada_fuutass
0
150
第131回 雲勉【オンライン】AWSを9年触ってきて経験した落とし穴、ハマったポイント
iret
6
470
履歴データテーブルとの向き合い方_PHPerKaigi2024
gennei
25
6.7k
SwiftUIのpropertyWrapperをふんわり理解する
jambo_develop_team
0
110
二刀流でWinActorを活用してみた話
tamai_63
0
120
マルチテナントの実現におけるDB設計とRLS / Utilizing RSL in multi-tenancy
soudai
20
5k
5分で理解するWebAssemblyのWebの外の話 PHPはマイコンの夢を見るか?
usuyuki
3
200
Featured
See All Featured
Scaling GitHub
holman
456
140k
Fireside Chat
paigeccino
19
2.5k
The Art of Programming - Codeland 2020
erikaheidi
40
12k
A designer walks into a library…
pauljervisheath
199
23k
GraphQLの誤解/rethinking-graphql
sonatard
48
9.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.2k
Designing for Performance
lara
601
67k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
Building a Modern Day E-commerce SEO Strategy
aleyda
15
6.3k
The Cost Of JavaScript in 2023
addyosmani
13
3.7k
The Power of CSS Pseudo Elements
geoffreycrofte
58
4.9k
The World Runs on Bad Software
bkeepers
PRO
60
6.6k
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