Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Micro Performance Improvements (Short Version)
Search
Ernesto Tagwerker
April 26, 2017
Technology
0
52
Micro Performance Improvements (Short Version)
Small Ruby and Rails code improvements you can do to have high performance in your application.
Ernesto Tagwerker
April 26, 2017
Tweet
Share
More Decks by Ernesto Tagwerker
See All by Ernesto Tagwerker
Stuck in the Tar Pit at Sin City Ruby '24
etagwerker
1
300
Lightning Talk: Escaping the Tar Pit
etagwerker
1
130
Fortify Rails Webinar
etagwerker
0
2.4k
Here Be Dragons: The Hidden Gems of Technical Debt
etagwerker
0
240
Lessons Learned from Open Source
etagwerker
0
100
Upgrading Rails: The Dual-Boot Way
etagwerker
1
480
Ruby 3.0 & Rails 6.1
etagwerker
0
200
RubyMem: The Leaky Gems Database for Bundler at Ruby Kaigi Takeout 2020
etagwerker
0
270
Escaping The Tar Pit at NYC.rb
etagwerker
0
120
Other Decks in Technology
See All in Technology
IAMユーザーゼロの運用は果たして可能なのか
yama3133
1
460
MariaDB Connector/C のcaching_sha2_passwordプラグインの仕様について
boro1234
0
120
AIプラットフォームにおけるMLflowの利用について
lycorptech_jp
PRO
1
170
Kiro Autonomous AgentとKiro Powers の紹介 / kiro-autonomous-agent-and-powers
tomoki10
0
530
AWSを使う上で最低限知っておきたいセキュリティ研修を社内で実施した話 ~みんなでやるセキュリティ~
maimyyym
2
1.7k
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
6
1.6k
re:Invent2025 3つの Frontier Agents を紹介 / introducing-3-frontier-agents
tomoki10
0
230
NIKKEI Tech Talk #41: セキュア・バイ・デザインからクラウド管理を考える
sekido
PRO
0
130
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
AI-DLCを現場にインストールしてみた:プロトタイプ開発で分かったこと・やめたこと
recruitengineers
PRO
2
150
.NET 10の概要
tomokusaba
0
110
AI 駆動開発勉強会 フロントエンド支部 #1 w/あずもば
1ftseabass
PRO
0
400
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
[SF Ruby Conf 2025] Rails X
palkan
0
540
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Git: the NoSQL Database
bkeepers
PRO
432
66k
It's Worth the Effort
3n
187
29k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Context Engineering - Making Every Token Count
addyosmani
9
520
Being A Developer After 40
akosma
91
590k
Designing Experiences People Love
moore
143
24k
Transcript
Micro Performance Improvements RailsConf, April 2017
Ernesto Tagwerker @etagwerker Founder & Software Developer at Ombu Labs
Best Practices 3
https://github.com/bbatsov/ruby-style-guide
https://speakerdeck.com/sferik/writing-fast-ruby
Bad Code vs. Good Code 6
# Bad HOUR_6 = Time.parse("2000-01-01 06:00:00 UTC") # Good HOUR_6
= Time.at(946685160).utc
$ bundle exec ruby benchmarks/time/parse_vs_at.rb Ruby version: 2.3.3 Warming up
-------------------------------------- Time.parse 3.287k i/100ms Time.at 66.086k i/100ms Calculating ------------------------------------- Time.parse 34.052k (± 3.2%) i/s - 170.924k in 5.024737s Time.at 842.576k (± 2.2%) i/s - 4.230M in 5.022207s Comparison: Time.at: 842576.2 i/s Time.parse: 34051.9 i/s - 24.74x slower
# OK phone = Hash.new(number: number) phone[:number] # Better Phone
= Struct.new(:number) phone = Phone.new(number) phone.number
$ bundle exec ruby benchmarks/struct_vs_hash.rb Ruby version: 2.3.3 Warming up
-------------------------------------- struct 22.148k i/100ms hash 4.688k i/100ms Calculating ------------------------------------- struct 240.460k (± 2.7%) i/s - 1.218M in 5.069592s hash 47.926k (± 3.9%) i/s - 243.776k in 5.094413s Comparison: struct: 240459.9 i/s hash: 47926.1 i/s - 5.02x slower
# Bad Post.select(:id).map(&:id) # Good Post.pluck(:id)
$ bundle exec rake benches:pluck_vs_map Ruby version: 2.3.3 Warming up
-------------------------------------- map(&:id) 11.000 i/100ms pluck(:id) 80.000 i/100ms Calculating ------------------------------------- map(&:id) 124.205 (±11.3%) i/s - 616.000 in 5.026999s pluck(:id) 807.127 (± 2.0%) i/s - 4.080k in 5.057062s Comparison: pluck(:id): 807.1 i/s map(&:id): 124.2 i/s - 6.50x slower
https://github.com/ombulabs/benches/ 13
Resources 14
15 https://speakerdeck.com/etagwerker/micro- performance-improvements https://github.com/evanphx/benchmark-ips https://github.com/evanphx/benchmark.fyi
Thank you! @etagwerker 16