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
0
43
Old Slide Deck About Images
Mike Danko
July 24, 2013
Tweet
Share
More Decks by Mike Danko
See All by Mike Danko
Stop Being Clever
skord
0
100
I Hate Computers
skord
0
110
Deploying Ruby/Rails Apps to AWS
skord
1
120
Brad vs Goblin
skord
0
79
jRuby for Web People
skord
0
73
Rails on Solaris and Friends
skord
0
110
Jaccard Index & Recommendable
skord
1
190
State of Conclave
skord
0
81
Space Hustling
skord
1
69
Featured
See All Featured
KATA
mclloyd
32
15k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Faster Mobile Websites
deanohume
310
31k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
32
2.2k
A designer walks into a library…
pauljervisheath
209
24k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
20k
Designing for humans not robots
tammielis
254
25k
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