Enviar pesquisa
Carregar
Rubinius For You - GoRuCo
•
0 gostou
•
625 visualizações
E
evanphx
Seguir
Evan Phoenix' presentation at GoRuCo
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 82
Baixar agora
Baixar para ler offline
Recomendados
The Story of Federal Register 2.0
The Story of Federal Register 2.0
peregrinator
RubyConfX Keynote
RubyConfX Keynote
prqgdave
India::Ruby
India::Ruby
Niranjan Paranjape
Rubinius - What Have You Done For Me Lately
Rubinius - What Have You Done For Me Lately
evanphx
Rubinius 1.0 and more!
Rubinius 1.0 and more!
evanphx
Developing a Language
Developing a Language
evanphx
RubyConf 2009
RubyConf 2009
evanphx
Staking Your Claim In Open Source
Staking Your Claim In Open Source
evanphx
Recomendados
The Story of Federal Register 2.0
The Story of Federal Register 2.0
peregrinator
RubyConfX Keynote
RubyConfX Keynote
prqgdave
India::Ruby
India::Ruby
Niranjan Paranjape
Rubinius - What Have You Done For Me Lately
Rubinius - What Have You Done For Me Lately
evanphx
Rubinius 1.0 and more!
Rubinius 1.0 and more!
evanphx
Developing a Language
Developing a Language
evanphx
RubyConf 2009
RubyConf 2009
evanphx
Staking Your Claim In Open Source
Staking Your Claim In Open Source
evanphx
Lessons Learnt in 2009
Lessons Learnt in 2009
pratiknaik
2011 02-14-libre
2011 02-14-libre
Vu Hung Nguyen
tarea 2 parcial robotica .pdf
tarea 2 parcial robotica .pdf
luisgabielnavarro
On-the-fly Visual Category Search in Web-scale Image Collections
On-the-fly Visual Category Search in Web-scale Image Collections
Ken Chatfield
introduction-infra-as-a-code using terraform
introduction-infra-as-a-code using terraform
niyof97
Pilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Pilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Pilot
Rails performance at Justin.tv - Guillaume Luccisano
Rails performance at Justin.tv - Guillaume Luccisano
Guillaume Luccisano
Open Source By The Numbers
Open Source By The Numbers
Black Duck by Synopsys
Ruby Under The Hood
Ruby Under The Hood
craig lehmann
Crm saturday madrid 2017 jordi montaña - test automation
Crm saturday madrid 2017 jordi montaña - test automation
Demian Raschkovan
Crm Saturday Madrid - Test Automation for Dynamics 365
Crm Saturday Madrid - Test Automation for Dynamics 365
Jordi Montaña
Unidad 4 robotica.docx
Unidad 4 robotica.docx
luisgabielnavarro
Archeology for Entertainment, or Checking Microsoft Word 1.1a with PVS-Studio
Archeology for Entertainment, or Checking Microsoft Word 1.1a with PVS-Studio
Andrey Karpov
Memory Issues in Ruby on Rails Applications
Memory Issues in Ruby on Rails Applications
Simeon Simeonov
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
Wee Hyong Tok
EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008
geraldbauer
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systems
Serge Stinckwich
It's all about the timing
It's all about the timing
SensePost
Node.js Performance Case Study
Node.js Performance Case Study
Fabian Frank
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
CodelyTV
Rubinius - What Have You Done For Me Lately?
Rubinius - What Have You Done For Me Lately?
evanphx
Accelerating Ruby with LLVM
Accelerating Ruby with LLVM
evanphx
Mais conteúdo relacionado
Semelhante a Rubinius For You - GoRuCo
Lessons Learnt in 2009
Lessons Learnt in 2009
pratiknaik
2011 02-14-libre
2011 02-14-libre
Vu Hung Nguyen
tarea 2 parcial robotica .pdf
tarea 2 parcial robotica .pdf
luisgabielnavarro
On-the-fly Visual Category Search in Web-scale Image Collections
On-the-fly Visual Category Search in Web-scale Image Collections
Ken Chatfield
introduction-infra-as-a-code using terraform
introduction-infra-as-a-code using terraform
niyof97
Pilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Pilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Pilot
Rails performance at Justin.tv - Guillaume Luccisano
Rails performance at Justin.tv - Guillaume Luccisano
Guillaume Luccisano
Open Source By The Numbers
Open Source By The Numbers
Black Duck by Synopsys
Ruby Under The Hood
Ruby Under The Hood
craig lehmann
Crm saturday madrid 2017 jordi montaña - test automation
Crm saturday madrid 2017 jordi montaña - test automation
Demian Raschkovan
Crm Saturday Madrid - Test Automation for Dynamics 365
Crm Saturday Madrid - Test Automation for Dynamics 365
Jordi Montaña
Unidad 4 robotica.docx
Unidad 4 robotica.docx
luisgabielnavarro
Archeology for Entertainment, or Checking Microsoft Word 1.1a with PVS-Studio
Archeology for Entertainment, or Checking Microsoft Word 1.1a with PVS-Studio
Andrey Karpov
Memory Issues in Ruby on Rails Applications
Memory Issues in Ruby on Rails Applications
Simeon Simeonov
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
Wee Hyong Tok
EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008
geraldbauer
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systems
Serge Stinckwich
It's all about the timing
It's all about the timing
SensePost
Node.js Performance Case Study
Node.js Performance Case Study
Fabian Frank
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
CodelyTV
Semelhante a Rubinius For You - GoRuCo
(20)
Lessons Learnt in 2009
Lessons Learnt in 2009
2011 02-14-libre
2011 02-14-libre
tarea 2 parcial robotica .pdf
tarea 2 parcial robotica .pdf
On-the-fly Visual Category Search in Web-scale Image Collections
On-the-fly Visual Category Search in Web-scale Image Collections
introduction-infra-as-a-code using terraform
introduction-infra-as-a-code using terraform
Pilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Pilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Rails performance at Justin.tv - Guillaume Luccisano
Rails performance at Justin.tv - Guillaume Luccisano
Open Source By The Numbers
Open Source By The Numbers
Ruby Under The Hood
Ruby Under The Hood
Crm saturday madrid 2017 jordi montaña - test automation
Crm saturday madrid 2017 jordi montaña - test automation
Crm Saturday Madrid - Test Automation for Dynamics 365
Crm Saturday Madrid - Test Automation for Dynamics 365
Unidad 4 robotica.docx
Unidad 4 robotica.docx
Archeology for Entertainment, or Checking Microsoft Word 1.1a with PVS-Studio
Archeology for Entertainment, or Checking Microsoft Word 1.1a with PVS-Studio
Memory Issues in Ruby on Rails Applications
Memory Issues in Ruby on Rails Applications
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systems
It's all about the timing
It's all about the timing
Node.js Performance Case Study
Node.js Performance Case Study
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Mais de evanphx
Rubinius - What Have You Done For Me Lately?
Rubinius - What Have You Done For Me Lately?
evanphx
Accelerating Ruby with LLVM
Accelerating Ruby with LLVM
evanphx
Ruby World
Ruby World
evanphx
Rubinius Community - MWRC
Rubinius Community - MWRC
evanphx
rubyconf 2007 - Rubinius 1.0
rubyconf 2007 - Rubinius 1.0
evanphx
Rubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystem
evanphx
Rubinius - A Tool of the Future
Rubinius - A Tool of the Future
evanphx
Mais de evanphx
(7)
Rubinius - What Have You Done For Me Lately?
Rubinius - What Have You Done For Me Lately?
Accelerating Ruby with LLVM
Accelerating Ruby with LLVM
Ruby World
Ruby World
Rubinius Community - MWRC
Rubinius Community - MWRC
rubyconf 2007 - Rubinius 1.0
rubyconf 2007 - Rubinius 1.0
Rubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystem
Rubinius - A Tool of the Future
Rubinius - A Tool of the Future
Último
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
UiPathCommunity
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
ThousandEyes
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
panagenda
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Alkin Tezuysal
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Scott Andery
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
Kari Kakkonen
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Sergiu Bodiu
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
Nicole Novielli
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
Farhan Tariq
2024 April Patch Tuesday
2024 April Patch Tuesday
Ivanti
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
LoriGlavin3
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
Mydbops
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
HarshalMandlekar2
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
DianaGray10
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
LoriGlavin3
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
Raghuram Pandurangan
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
Nathaniel Shimoni
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
Ravi Sanghani
Último
(20)
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
2024 April Patch Tuesday
2024 April Patch Tuesday
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
Rubinius For You - GoRuCo
1.
Rubinius For You
@evanphx ♘ github.com/evanphx Evan Phoenix Jun 4th, 2011
2.
2011 The Year Rubinius
Breaks Through
3.
Why Bother?
4.
Why Bother? We can
have it better
5.
Why Bother? Not a
single release, a philosophy
6.
Why Bother? Improve
over time
7.
Why Bother?
Improve Performance
8.
Why Bother?
Improve Tooling
9.
Why Bother?
Improve Developer Experience
10.
What’s Next?
11.
What’s Next?
2.0
12.
What’s Next?
2.0 Ruby 1.9 support
13.
What’s Next?
2.0 Concurrency
14.
What’s Next?
2.0 Microsoft Windows support
15.
Real World
16.
Real World When programs
stop being polite and start getting real.
17.
Real World Rubinius slower
than it should be
18.
Real World Profiling is
key to improving
19.
Real World Profiling is
key to improving Example
20.
WARNING: SCIENCE AHEAD
21.
Problem: A method seems
slow
22.
Improving
Step 1
23.
Improving
Step 1 Benchmark
24.
require 'benchmark' cc =
CoworkersCode.new Benchmark.bm do |x| x.report("initial") { cc.calculate_awesome_score } end
25.
user
system total real initial 0.071788 0.001601 0.073389 ( 29.998823)
26.
user
system total real initial 0.071788 0.001601 0.073389 ( 29.998823)
27.
29.998823
28.
user: 0.071788 system: 0.001601
total: 0.073389 real: 29.998823
29.
User Time running code
30.
System Time inside the
kernel
31.
Total Sum of user
and system
32.
Real Elapsed wall clock
33.
Wall Clock
Topic
34.
user: 0.071788 system: 0.001601
total: 0.073389 real: 29.998823
35.
?? 0.073389
!= 29.998823
36.
Improving
Step 2 Profile
37.
» rbx -Xprofile
scratch/profile_sample.rb % cumulative self self total time seconds seconds calls ms/call ms/call name ------------------------------------------------------------ 99.69 30.00 30.00 10 3000.10 3000.10 Rubinius::Channel#receive_timeout 0.13 0.04 0.04 2 19.82 19.82 IO.open_with_mode 0.11 0.03 0.03 1 33.05 33.05 IO::Buffer#fill 0.02 0.01 0.01 18 0.30 0.30 FFI::Platform::POSIX.stat
38.
» rbx -Xprofile
-Xprofiler.graph scratch/profile_sample.rb 0.00 30.00 10/60 Kernel#sleep [15] [16] 99.9 30.00 0.00 10 Rubinius::Channel#receive_timeout [16] 0.00 30.00 10/20 CoworkersCode#superhero_factor [14] [15] 99.9 0.00 30.00 10 Kernel#sleep [15] 30.00 0.00 10/10 Rubinius::Channel#receive_timeout [16]
39.
def superhero_factor
sleep 3 rand(10) end
40.
Improving
Step 3 Fix and benchmark
41.
user
system total real initial 0.000102 0.000047 0.000149 ( 0.000139)
42.
0.000139
43.
0.073389
!= 29.998823
44.
Sleep! Invisible in all
but real
45.
E D
Problem:! O LV S A method seems slow
46.
Real World Rubinius can
tune your code itself
47.
Real World Rubinius can
tune your code itself Dynamic is not dynamic all the time
48.
“It’s ducks all
the way down.” - Sandi Metz
49.
Real World Rubinius can
tune your code itself Most of yours quack the same though!
50.
def last_part(str)
str.split(“ “).last end
51.
def last_part(str)
str.split(“ “).last end
52.
1: 25245
2: 275 3: 86 2 4: 50 1% 5: 35 6: 6 7: 10 8: 5 9: 5 10: 2 10+: 34 1 class 98% Call sites running Array specs
53.
Real World Rubinius can
tune your code itself Shoot first, let the VM sort it out.
54.
Real World Made for
ruby applications
55.
Real World Made for
ruby applications Ruby is objects
56.
Real World Made for
ruby applications Rubinius is made for objects
57.
Real World Made for
ruby applications Lots of objects
58.
“To optimize, I
make sure not to create objects.” - Ryan Smith
59.
1. 10,000,000 times
a. Create 101 objects b. Save one of them https://gist.github.com/1008305
60.
mri
3000 2500 2000 MBs 1500 1000 500 0
61.
1. 10,000,000 times
a. Create 101 objects b. Save one of them Saved objects: 10,000,000
62.
mri
rbx 3000 2500 2000 MBs 1500 1000 500 0
63.
mri
rbx 300 250 200 MBs 150 100 50 0
64.
mri
rbx 70 58 47 MBs 35 23 12 0 100k 200k 300k 400k
65.
Memory
Time 3,000 2,250 531 1,500 750 57 0 mri rbx
66.
Real World Made for
ruby applications Love thy objects
67.
Next Steps
68.
Next Steps More profiling,
more tuning
69.
Next Steps Newer, smarter
compiler
70.
Rubinius and You
71.
Rubinius and You
Compatibly is there
72.
Rubinius and You Rubinius
isn’t terrible for any workload
73.
Rubinius and You Rubinius
is amazing for some
74.
Rubinius and You
Try Rubinius!
75.
Rubinius and You
Stickers in the back!
76.
Rubinius and You
Shirts email us! community@rubini.us
77.
Rubinius Reward
Use it in production => blog post about you
78.
Thanks! @evanphx ♘ github.com/evanphx
Evan Phoenix Jun 4th, 2011
79.
Rubinius
Technology Efficient Memory Layout
80.
obj.ivars = {
:@name => “Evan”, :@age => 31 }
81.
obj.class.ivars = {
:@name => 0, :@age => 1 } obj.ivars = [ “Evan”, 31 ]
82.
Flags Class Extra
Ivars @name @age
Baixar agora