Suche senden
Hochladen
Rubinius For You - GoRuCo
•
0 gefällt mir
•
625 views
E
evanphx
Folgen
Evan Phoenix' presentation at GoRuCo
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 82
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
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
Empfohlen
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
Weitere ähnliche Inhalte
Ähnlich wie 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
Ähnlich wie 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)
Mehr von 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
Mehr von 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
Kürzlich hochgeladen
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Curtis Poe
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Hervé Boutemy
How to write a Business Continuity Plan
How to write a Business Continuity Plan
Databarracks
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
mohitsingh558521
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
LoriGlavin3
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Lonnie McRorey
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
Dilum Bandara
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
LoriGlavin3
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
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
LoriGlavin3
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Fwdays
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
Alex Barbosa Coqueiro
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
UiPathCommunity
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
Commit University
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
ScyllaDB
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Sergiu Bodiu
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Fwdays
Kürzlich hochgeladen
(20)
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
How to write a Business Continuity Plan
How to write a Business Continuity Plan
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
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
Jetzt herunterladen