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
Old Slide Deck About Images
Search
Mike Danko
July 24, 2013
50
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Old Slide Deck About Images
Mike Danko
July 24, 2013
More Decks by Mike Danko
See All by Mike Danko
Stop Being Clever
skord
0
110
I Hate Computers
skord
0
110
Deploying Ruby/Rails Apps to AWS
skord
1
120
Brad vs Goblin
skord
0
85
jRuby for Web People
skord
0
79
Rails on Solaris and Friends
skord
0
110
Jaccard Index & Recommendable
skord
1
190
State of Conclave
skord
0
86
Space Hustling
skord
1
75
Featured
See All Featured
New Earth Scene 8
popppiees
3
2.4k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
BBQ
matthewcrist
89
10k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
320
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.1k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
910
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
360
Transcript
Performance Image Processing with Ruby And Friends
Who? • TWC Systems Engineer • Network/Systems/Video Integration. Mostly Video.
• Puts pic on slide, even though he’s standing right there.
Who? • Artisan/Grill Fairy/Beer Czar at Neo • Rails and
Stuff • Puts pic on slide, even though he’s standing right there.
Why Does it Matter?
Small Site Operator • Difference between free and not on
Heroku • More time for requests • Less of a chance of hitting the magic 30 second mark
Everyone Else • More efficient workers == Less $$$ •
Faster response == More $$$ • Less time doing the mundane means more time for the interesting.
Peer Pressure • A simple gem change can improve performance
by 220% • Another 15 minutes of work can offload uploads completely • It’s easy, come on.
When Not To... • You’re on jRuby • Your processing
needs are complex • You think you’re doing it right
Getting the Images
People Uploading • Don't tie up Ruby time • Given
Workers, go direct to S3 when you are using S3 • Use nginx’s upload module if that’s your bag
Basics • Your IO will block somewhere, avoid the CPU
• Decoupling IO from processing will do you wonders. • Use workers to your advantage
If You Give A Mouse an Image... • ImageMagick •
GraphicsMagick • ImageSorcery • ImageScience • OpenCV • For the brave... Intel IPP
No Processor is Alike • And they’re mostly really inefficient.
The Rundown
Backing Methods • Pure Ruby: ChunkyPNG • C: RMagick, ImageScience
• Subexec: MiniMagick, QuickMagick • Hybrids: ChunkyPNG/OilyPNG
Something Bothered Me • Went about profiling and benchmarking Ruby
• Went about profiling and benchmarking GM/ IM • Why is something as simple as changing the size of a picture so complex?
ruby-prof breakdown 0 20 40 60 80 Sorcery (IM) Sorcery
(GM) Science Mini (IM) Mini (GM) 73 40 0 0 0 14 20 0 10 12 0 31 14 23 28 23 30 16 22 34 Fit Fill Pad Slice Gif
None
None
Rules of Thumb • Use ImageScience whenever you can •
Next default to subexec’d GM • Use multiple gems if you need to, or patch an existing one. • Avoid calling IM/GM more than once per run