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 profiling - David Grayson
Search
Las Vegas Ruby Group
August 28, 2013
93
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
170
SWIG and Ruby - David Grayson
lvrug
0
110
Practical Object-Oriented Design in Ruby - Charles Jackson
lvrug
3
150
The Hamster Gem - Ryan Mulligan
lvrug
1
130
Varnish+Redis - Russ Smith
lvrug
1
150
Lambdas and Pops - Jan Hettich
lvrug
0
120
Making Good Use of Fonts - Russ Smith
lvrug
1
120
Featured
See All Featured
Abbi's Birthday
coloredviolet
3
9.3k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
56k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
470
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Thoughts on Productivity
jonyablonski
76
5.3k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1.1k
Unsuck your backbone
ammeep
672
58k
Odyssey Design
rkendrick25
PRO
2
750
Visualization
eitanlees
152
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
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