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
Ruby Lugdunum 2012: Message in a Bottle
Search
Konstantin Haase
June 23, 2012
Technology
2
610
Ruby Lugdunum 2012: Message in a Bottle
Konstantin Haase
June 23, 2012
Tweet
Share
More Decks by Konstantin Haase
See All by Konstantin Haase
RubyConf Philippines 2017: Magenta is a Lie
rkh
0
220
How We Replaced Salary Negotiations with a Sinatra App
rkh
17
4.3k
HTTP (RubyMonsters Edition)
rkh
5
1.2k
GCRC 2015: Abstract Thoughts on Abstract Things
rkh
1
380
Frozen Rails: Magenta - The Art Of Abstraction
rkh
3
320
RedDotRubyConf 2014: Magenta is a Lie - and other tales of abstraction
rkh
0
960
Ancient City Ruby: Hack me, if you can!
rkh
2
440
Boston I/O: Continuous Integration
rkh
3
320
Steel City Ruby: Architecting Chaos
rkh
4
960
Other Decks in Technology
See All in Technology
Azure Copilot Migration Agent / #jazug
koudaiii
1
160
デザインもAIに任せる!iPhoneで行うiOS開発
zozotech
PRO
0
220
ランサムウェア対策としてのpnpm導入のススメ
ishikawa_satoru
0
310
Cosmos World Foundation Model Platform for Physical AI
takmin
0
1k
量子クラウドシステムと運用
oqtopus
0
160
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
74k
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
320
ECS障害を例に学ぶ、インシデント対応に備えたAIエージェントの育て方 / How to develop AI agents for incident response with ECS outage
iselegant
5
750
マネージャー視点で考えるプロダクトエンジニアの評価 / Evaluating Product Engineers from a Manager's Perspective
hiro_torii
0
280
22nd ACRi Webinar - ChipTip Technology Eric-san's slide
nao_sumikawa
0
120
『誰の責任?』で揉めるのをやめて、エラーバジェットで判断するようにした ~感情論をデータで終わらせる、PMとエンジニアの意思決定プロセス~
coconala_engineer
0
150
量子クラウドサービスの裏側 〜Deep Dive into OQTOPUS〜
oqtopus
0
330
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
130
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Typedesign – Prime Four
hannesfritz
42
3k
How to train your dragon (web standard)
notwaldorf
97
6.5k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
88
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
sira's awesome portfolio website redesign presentation
elsirapls
0
160
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Transcript
MESSAGE IN A BOTTLE Konstantin Haase Ruby Lugdunum June 23,
2012
@konstantinhaase (I’m sorry about that) rkh on github
Sinatra Rack, Tilt, Rubinius, ...
None
None
None
None
None
None
Ruby 1.8 is slow because it's interpreted.
Surprise! Ruby 1.9 is interpreted, too.
THANKS
Ruby
Internals
Performance
None
RubyMotion
WHAT WE’LL LOOK INTO MRI: method dispatch and execution Rubinius:
inline caches and JIT JRuby: invokedynamic
None
THEY JUST LOVE BYTECODE
None
MRI
Rubinius
JRuby (JVM 1.6)
None
Source Code Parser Parse Tree Interpreter Bytecode Compiler Bytecode Interpreter
JIT Machine Code CPU VM
THE PLAN Find Method Execute Method
Performance
HOW TO SPEED UP? Find Method Faster Execute Method Faster
FIND FASTER Inline Cache (aka Call/ Send Site Cache) Lookup
Cache Inlining
EXECUTE FASTER Reduce operations Just-in-time compilation Speed up search
None
rb_method_entry rb_method_entry_without_cache search_method
None
None
None
None
None
None
None
None
None
None
None
None
None
SPECIALIZED METHODS cached bytecode code with breakpoints specialized for arguments
JITed code
None
None
None
None
None
None
None
Process invokedynamic JVM method bootstrap guard fallback
None
THANKS