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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
chrismdp
February 22, 2012
Technology
680
2
Share
The great Ruby Showdown
How do the different Rubies out there perform with a non trivial ruby application?
chrismdp
February 22, 2012
More Decks by chrismdp
See All by chrismdp
Why Rails is still relevant for startups in 2021
chrismdp
0
130
5 ways I screwed up Sol Trader's launch
chrismdp
0
200
Pathfinding Peril SPA 2016
chrismdp
0
230
Pathfinding Peril - BCS 2014
chrismdp
0
200
Separating allocation from code - NDC
chrismdp
0
160
Separating Allocation from Code
chrismdp
1
570
Extreme Isolation Workshop
chrismdp
1
150
Who's code is it anyway?
chrismdp
0
120
Extreme Isolation (Lightning talk)
chrismdp
1
170
Other Decks in Technology
See All in Technology
GitHub Copilot のこれまでとこれから: From Copilot to Collaborative Agents
yuriemori
1
160
脅威をエンジニアリングの糧にして:恐怖を乗り越えた先にあったもの / Turn threats into fuel for engineering: what lay beyond overcoming fear
nrslib
0
190
Amazon Bedrock 経由の Claude Cowork を試してみよう・MCP にも繋いでみよう
sugimomoto
0
140
checker.tsにチキンレースを仕掛けてみた:型エラー(TS2589)が発生する境界線を求めて
hal_spidernight
1
200
AI Agent に“攻略本”を渡したら、150フォームの移行が回り始めた話/登壇資料(高橋 悟生)
hacobu
PRO
1
430
Harnessing the Power of Mocks and Stubs in PHPUnit / #laravellivejp
asumikam
0
300
最新技術を"今は選ばない"という技術選定
leveragestech
PRO
0
410
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.5k
AIAgentと取り組むKaggle
508shuto
2
540
Pythonでベイズモデリング
soogie
0
180
Anthropic AIネイティブ・スタートアップ構築のプレイブック を理解する
nagatsu
0
160
コーポレートサイトのアクセシビリティ改善とJIS準拠への実践
lycorptech_jp
PRO
2
140
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
300
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
430
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
210
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Color Theory Basics | Prateek | Gurzu
gurzu
0
310
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
210
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
510
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
750
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
560
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
150
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
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