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
53
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
120
Deploying Ruby/Rails Apps to AWS
skord
1
120
Brad vs Goblin
skord
0
89
jRuby for Web People
skord
0
80
Rails on Solaris and Friends
skord
0
110
Jaccard Index & Recommendable
skord
1
190
State of Conclave
skord
0
87
Space Hustling
skord
1
76
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
510
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Test your architecture with Archunit
thirion
2
2.4k
How to make the Groovebox
asonas
2
2.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Leo the Paperboy
mayatellez
8
2.2k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
840
Thoughts on Productivity
jonyablonski
76
5.4k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
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