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
The Cacher in the Rye
Search
Tsukasa OISHI
December 07, 2018
Programming
1
5.8k
The Cacher in the Rye
Tsukasa OISHI
December 07, 2018
Tweet
Share
More Decks by Tsukasa OISHI
See All by Tsukasa OISHI
怖くないメモリ肥大化
tsukasa_oishi
1
52
SLI/SLO をストリーム アラインドチームに導入した話
tsukasa_oishi
0
150
JITをたどるとそこはYARVの中
tsukasa_oishi
0
550
ISeqで遊ぼう
tsukasa_oishi
0
5k
Rubyを30倍速くした話
tsukasa_oishi
0
1.1k
はてブ砲をくらったときのお話
tsukasa_oishi
0
1.9k
食べログで動いている自作ライブラリのお話
tsukasa_oishi
0
290
奥さんとプログラミングを両立させる方法
tsukasa_oishi
0
50
MiyazakiResistanceを作ってみたよ
tsukasa_oishi
0
890
Other Decks in Programming
See All in Programming
暇に任せてProxmoxコンソール 作ってみました
karugamo
1
720
Jakarta EE meets AI
ivargrimstad
0
230
42 best practices for Symfony, a decade later
tucksaun
1
180
ドメインイベント増えすぎ問題
h0r15h0
1
220
見えないメモリを観測する: PHP 8.4 `pg_result_memory_size()` とSQL結果のメモリ管理
kentaroutakeda
0
300
rails statsで大解剖 🔍 “B/43流” のRailsの育て方を歴史とともに振り返ります
shoheimitani
2
930
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
0
160
複雑な仕様に立ち向かうアーキテクチャ
myohei
0
170
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
250
DevFest Tokyo 2025 - Flutter のアプリアーキテクチャ現在地点
wasabeef
5
900
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
120
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
3
1.1k
Featured
See All Featured
Bash Introduction
62gerente
608
210k
Producing Creativity
orderedlist
PRO
341
39k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Fireside Chat
paigeccino
34
3.1k
What's in a price? How to price your products and services
michaelherold
243
12k
Navigating Team Friction
lara
183
15k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Mobile First: as difficult as doing things right
swwweet
222
9k
Typedesign – Prime Four
hannesfritz
40
2.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
It's Worth the Effort
3n
183
28k
The Invisible Side of Design
smashingmag
298
50k
Transcript
Tsukasa Oishi tsukasaoishi 5IF$BDIFSJOUIF3ZF
͓͓͍͔ͭ͠͞
None
None
None
None
GSBHNFOUDBDIF
ߋ৽සͷ͍ίϯςϯπ
-40 -20 0 20 40 4݄ 5݄ 6݄ 7݄ 8
-40 -20 0 20 40 4݄ 5݄ 6݄ 7݄ 8
Eviction
256B 307B
256B 307B
256B 307B
256B 307B
256B 307B
256B 307B
256B 307B
256B 307B
256B 307B
256B 307B
256B 307B
256B 307B
NFNDBDIFE࠶ىಈ
3BJMTσϑΥϧτͰΩϟογϡۭ͕ؒͻͱͭ
ڧ͍͕ͭಠΓΊ
CJU[FS@TUPSFHFN STU@PCKFDUT VTFS@GPPUFS TIBSFE STU@GPPUFS FYUFSOBM
CJU[FS@TUPSFHFN Rails.cache.fetch(key, sheep: :rst_footer) STU@PCKFDUT VTFS@GPPUFS EFGBVMU STU@GPPUFS FYUFSOBM
PCKFDUDBDIF
3FTUBVSBOUpOE@CZ@DBDIF JE
3BJMTDBDIFGFUDI ʜ EP 3FTUBVSBOUQSFMPBE SFTUBVSBOU@TDPSF QSFGFDUVSF DBUFHPSZ@BT
pOE JE FOE
৯ϩάͷ͋ͪΒͪ͜ΒͰ ΘΕΔΑ͏ʹͳͬͨ
Benchmark.driver do |x| x.report "AR", %|Restaurant.preload( :restaurant_score, :prefecture, :category_as ).find(1)|
x.report "cache", %|Rails.cache.read(“1")| x.report "mono", %|Restaurant.find(1)| x.compare! end
mono: 1887.1 i/s cache: 729.3 i/s - 2.59x slower AR:
57.5 i/s - 32.84x slower
3FTUBVSBOUΦϒδΣΫτ͕ཉ͍͚ͩ͠ͳΒ ;ͭ͏ʹ3FTUBVSBOUpOEͨ͠΄͏͕ ͔ͬͨʜ
Ωϟογϡʹ ίετ͕͔͔Δ
طଘͷίʔυͯ͠·ͤΜ
mono: 1887.1 i/s cache: 729.3 i/s - 2.59x slower AR:
57.5 i/s - 32.84x slower 2.59ഒ ͍! େมͩ!
NTͷͩ͠ɺͦ͜ϘτϧωοΫͰͳ͍
DBDIFDMFBS
3FTUBVSBOU DSFBUFVQEBUFEFMFUF 3FTUBVSBOU PCKFDUDBDIF 3FTUBVSBOU GSBHNFOUDBDIF
SFTUBVSBOUTςʔϒ ϧʹ ΧϥϜՃͰྫ֎ൃੜ
3FTUBVSBOU DSFBUFVQEBUFEFMFUF 3FTUBVSBOU PCKFDUDBDIF 3FTUBVSBOU GSBHNFOUDBDIF 3FTUBVSBOU BMUFSUBCMF
ϚΠΫϩαʔϏε
3FTUBVSBOU DSFBUFVQEBUFEFMFUF 3FTUBVSBOU PCKFDUDBDIF 3FTUBVSBOU GSBHNFOUDBDIF 3FTUBVSBOU BMUFSUBCMF 3FTUBVSBOU DSFBUFVQEBUFEFMFUF
3FTUBVSBOU GSBHNFOUDBDIF
Ͳ͏ӡ༻͢Δʹͯ͠ίετ૿େ͢Δ
ԯਓͷਓͨͪΛ͚ͩͤ͢͜͠ʹ͢Δ XFBSFIJSJOH
Ωϟογϡ͍ΕΕ ͪΐͬͺͰ͢Α
ӡ༻Λߟ্͑ͨͰ Λݴ͓ͬͯΔͷ͔
తͱظ͢ΔޮՌ ϨεϙϯελΠϜΛ͍ͨ͘͠ αʔόϦιʔεΛิ͍͍ͨ
ӡ༻ͱίετ ΩϟογϡσʔλͷҰੜ ͯ͢ͷΩϟογϡ͕ফ͑ͨͱ͖ ΩϟογϡΛҙ࣮ࣝͨ͠ ࢹͱอक
ϦεΫ ΩϟογϡΛΊΒΕͳ͍ దͰͳ͍Ωϟογϡ͕ΘΕͨ Ωϟογϡ͕ফ͑ͳ͍ ώοτ͗ͯ͢ίετ͚͕͔͔ͩΔ
ΩϟογϡΛ͍͍ͨͱࢥͬͨͱ͖ͷߟ͑ํ
Θͳ͍
ϨεϙϯελΠϜΛ͍ͨ͘͠ αʔόϦιʔεΛิ͍͍ͨ
ͪΌΜͱߟ͑ͯઃܭͱ࣮Λ͢Ε తΛୡͰ͖Δ
Ͱɺ ͜ΕΛΖ͏ͱͨ͠Β Ͳ͏ͬͨͬͯ Ωϟογϡൈ͖͡ΌແཧͩΖ
اըͷஈ֊Ͱʮ͜Εةͳ͘ͶʁʯΛײ͡औΔ
ຊʹΓ͍ͨ͜ͱΛཧղͯ͠ ઐՈͱͯ͠ ͖ͪΜͱͨ͠ସҊΛग़͢
Ωϟογϡʹର͢Δߟ͑ํ
ෛ࠴
ෛ࠴ѱ Ͱͳ͍
͍͟ͱ͍͏ͱ͖ ֮ޛΛͬͯ ෛ࠴Λഎෛ͏
৯ϩάͰͷΩϟογϡ ेͳϦιʔε͕͋ΔͷͰجຊతʹΩϟογϡෆཁ ಥൃతͳΞΫηε૿ʹରԠ͢ΔͨΊʹ ࣌ؒ55-ͷΞΫγϣϯΩϟογϡΛ ͍ͬͯΔ͜ͱ͋Δ աڈʹ࡞ͬͯͣͬͱӡ༻͞Ε͚͍ͭͮͯΔ มͳΩϟογϡ͕͍͔ͭ͋͘ΔͷͰ ͳ͍͖͍ͯͨ͘͠
͓͠·͍