Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Ruby profiling - David Grayson
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Las Vegas Ruby Group
August 28, 2013
94
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ruby profiling - David Grayson
Las Vegas Ruby Group
August 28, 2013
More Decks by Las Vegas Ruby Group
See All by Las Vegas Ruby Group
Ruby ISO Standard - David Grayson
lvrug
0
180
Windows Automation - Howard Feldman
lvrug
0
120
Separating Your Application from Rails - Brian Hughes
lvrug
0
180
SWIG and Ruby - David Grayson
lvrug
0
120
Practical Object-Oriented Design in Ruby - Charles Jackson
lvrug
3
160
The Hamster Gem - Ryan Mulligan
lvrug
1
150
Varnish+Redis - Russ Smith
lvrug
1
150
Lambdas and Pops - Jan Hettich
lvrug
0
130
Making Good Use of Fonts - Russ Smith
lvrug
1
120
Featured
See All Featured
We Are The Robots
honzajavorek
0
400
WCS-LA-2024
lcolladotor
0
890
Done Done
chrislema
187
17k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Ruling the World: When Life Gets Gamed
codingconduct
0
400
Leo the Paperboy
mayatellez
10
2.4k
Bash Introduction
62gerente
615
220k
Test your architecture with Archunit
thirion
2
2.4k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
How STYLIGHT went responsive
nonsquared
100
6.3k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Transcript
Ruby profiling David Grayson Las Vegas Ruby Meetup 2013-08-28
None
Two profiling tools ruby-prof rblineprof
Features of ruby-prof Speed Can measure: call
times memory usage object allocations Text and HTML reports: Flat profiles Graph profiles Call tree profiles for KCacheGrind Supports multiple threads
Example ruby-prof profiles
ruby-prof executable ruby-prof --file=profile.html \ --printer=graph_html \ slow_program.rb ruby-prof slow_program.rb
ruby-prof API require 'ruby-prof' RubyProf.start slow_code result = RubyProf.stop File.open("slow2.txt","w")
do |file| RubyProf::GraphPrinter.new(result).print(file) end
Excluding methods in ruby-prof Exclude methods by class/method name
or regular expression. Remove useless things like Integer#times from reports. New!
rblineprof 652-line ruby extension written in C Seems
to report the time spent on each line. No documentation, no report formatting
| class Foo | def x 2112.8ms 2112.3ms 3 |
y; z; z | end | | def y 2031.6ms 2031.2ms 51 | 50.times { z } | end | | def z 14.7ms 14.6ms 52 | waste_cpu 0 2096.0ms 2095.6ms 52 | waste_cpu 0.04 | end | | def waste_cpu(seconds) 5.1ms 5.1ms 312 | start = Time.now 1875.4ms 1876.4ms 109375 | while(Time.now - start < seconds); end | end | end | | require 'rblineprof' | profile = lineprof(/./) do 2112.9ms 2112.4ms 3 | Foo.new.x | end | | File.readlines(__FILE__).each_with_index do |line, num| | sample = profile[__FILE__][num+1] | if sample[0] > 0 | sample_data = sprintf "%8.1fms %8.1fms %7d", | sample[0]/1000.0, sample[1]/1000.0, sample[2], line | end | printf "%30s | %s", sample_data, line | end
References ruby-prof https://github.com/ruby-prof/ruby-prof/ rblineprof https://github.com/tmm1/rblineprof
https://github.com/blog/1475-escape-velocity