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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
80
jRuby for Web People
skord
0
74
Rails on Solaris and Friends
skord
0
110
Jaccard Index & Recommendable
skord
1
190
State of Conclave
skord
0
81
Space Hustling
skord
1
70
Featured
See All Featured
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Speed Design
sergeychernyshev
33
1.5k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
94
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
130
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
330
Technical Leadership for Architectural Decision Making
baasie
1
250
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
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