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
Ruby 2.4 のハッシュテーブル高速化を理解する
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Nao Minami
April 20, 2017
Programming
3
6.9k
Ruby 2.4 のハッシュテーブル高速化を理解する
第2回 meguro.rb LT で Ruby 2.4 のハッシュテーブル実装について話しました
https://megurorb.connpass.com/event/55107/
Nao Minami
April 20, 2017
Tweet
Share
More Decks by Nao Minami
See All by Nao Minami
Real World Migration from HTTP to gRPC #CNDT2020
south37
3
6.1k
Real World Migration from HTTP to gRPC in Ruby #grpcconf
south37
2
4.7k
Getting Things Done をベースにした仕事の進め方 / How to Work with Getting Things Done
south37
8
8.4k
Web API に秩序を与える Protocol Buffers / Protocol Buffers for Web API #builderscon
south37
18
17k
puma v4 では SIGTERM での worker process ゾンビ化に気をつけよう / Be aware of zombie processes in puma v4
south37
1
4.1k
理想的なマイクロサービスアーキテクチャを目指す継続的改善 / Re-architecturing of Microservices #CNDT2019
south37
10
15k
gcpc: Google Cloud Pub/Sub Client for Ruby #tqrk13
south37
1
870
実行計画から学ぶ PostgreSQL の内部動作とクエリ最適化 / Learn PostgreSQL from Explain
south37
8
42k
学びを得るための新卒 ISUCON / New Grad ISUCON for Learning
south37
4
44k
Other Decks in Programming
See All in Programming
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.3k
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.6k
2026/02/04 AIキャラクター人格の実装論 口 調の模倣から、コンテキスト制御による 『思想』と『行動』の創発へ
sr2mg4
0
720
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
160
開発ステップを細分化する、破綻しないAI開発体制
kspace
0
110
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
1.2k
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
390
株式会社 Sun terras カンパニーデック
sunterras
0
2k
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
210
AI活用のコスパを最大化する方法
ochtum
0
120
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
120
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
130
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
150
Bash Introduction
62gerente
615
210k
The Limits of Empathy - UXLibs8
cassininazir
1
250
Un-Boring Meetings
codingconduct
0
220
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
460
Everyday Curiosity
cassininazir
0
150
Mind Mapping
helmedeiros
PRO
1
110
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
140
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.1k
Unsuck your backbone
ammeep
672
58k
Transcript
3VCZͷϋογϡςʔϒϧ ߴԽΛཧղ͢Δ /BP.JOBNJ !TPVUI
ࣗݾհ
/BP.JOBNJ!TPVUI !NJOBNJP 4PGUXBSFFOHJOFFS !8BOUFEMZ *OD
w 3VCZͱύϑΥʔϚϯε w 3VCZͰͷϋογϡςʔϒϧߴԽͱͦͷԸܙ w ߴԽͲ͏࣮ݱ͞Εͨͷ͔ʁ w ·ͱΊ ࠓ͢༰
w 3VCZͱύϑΥʔϚϯε w 3VCZͰͷϋογϡςʔϒϧߴԽͱͦͷԸܙ w ߴԽͲ͏࣮ݱ͞Εͨͷ͔ʁ w ·ͱΊ ࠓ͢༰
3VCZY
w ·Ͱʹ3VCZഒ͘ͳΔCZ!NBU[ 3VCZͱύϑΥʔϚϯε w .VMUJ5ISFBE +*5 FUD w 3VCZY w
3VCZͰͷϋογϡςʔϒϧߴԽ /&8
w 3VCZͱύϑΥʔϚϯε w 3VCZͰͷϋογϡςʔϒϧߴԽͱͦͷԸܙ w ߴԽͲ͏࣮ݱ͞Εͨͷ͔ʁ w ·ͱΊ ࠓ͢༰
ϋογϡςʔϒϧߴԽͱͦͷԸܙ
ϋογϡςʔϒϧߴԽͱͦͷԸܙ
ϋογϡςʔϒϧߴԽͱͦͷԸܙ w 36#:#&/$) w ߴԽ w ϝϞϦ༻ྔݮ 1000000.times.map{|i| a={}; 8.times{|j|
a[j]=j}; a} IUUQTSVCZCFODIPSHSVCZSVCZSFMFBTFT SFTVMU@UZQFIBTI@TNBMM
ϋογϡςʔϒϧߴԽͱͦͷԸܙ w QJDP@IUUQ@QBSTFS w ߴԽ IUUQLB[FCVSPIBUFOBCMPHDPNFOUSZ ʜ3VCZ ੨ʜ3VCZQSF
ܶతʹ͘ͳͬͯΔ
w 3VCZͱύϑΥʔϚϯε w 3VCZͰͷϋογϡςʔϒϧߴԽͱͦͷԸܙ w ߴԽͲ͏࣮ݱ͞Εͨͷ͔ʁ w ·ͱΊ ࠓ͢༰
ߴԽͲ͏࣮ݱ͞Εͨͷ͔ʁ w ϋογϡςʔϒϧͷিಥ࣌ͷڍಈΛมߋ $IBJOJOH 0QFO"ESFTTJOH w ϙΠϯτʮσʔλͷہॴੑͷ্ʯ
σʔλͷہॴੑͳͥॏཁ͔ w 1SPDFTTPSʹଟஈΩϟογϡ͕ଘࡏ w ΩϟογϡʹIJU͢ΔͱύϑΥʔϚϯε্ $16 L# .BJO.FNPSZ -$BDIF -$BDIF
-$BDIF .# (# L# # dOT IUUQTUBDLPWFSqPXDPNRVFTUJPOTBQQSPYJNBUFDPTUUPBDDFTTWBSJPVTDBDIFTBOENBJONFNPSZ dOT
σʔλͷہॴੑͳͥॏཁ͔ w 1SPDFTTPSʹଟஈΩϟογϡ͕ଘࡏ w σʔλͷہॴੑ͕ॏཁ $16 L# .BJO.FNPSZ -$BDIF -$BDIF
-$BDIF .# (# L# # dOT IUUQTUBDLPWFSqPXDPNRVFTUJPOTBQQSPYJNBUFDPTUUPBDDFTTWBSJPVTDBDIFTBOENBJONFNPSZ dOT
0QFO"ESFTTJOHͰσʔλͷہॴੑ্͕͕Δͷͳͥʁ w $IBJOJOH 0QFO"ESFTTJOHͭͷΞϧΰϦζϜΛൺֱ w ૬ҧϋογϡςʔϒϧͷিಥ࣌ͷڍಈ w $IBJOJOH࿈݁ϦετΛḷͬͯ୳ࡧ w 0QFO"ESFTTJOH"SSBZ্ͰJOEFYΛม͑ͯ୳ࡧ
w ڞ௨ w ϋογϡςʔϒϧLFZͷIBTIΛJOEFYʹར༻
$IBJOJOHͷΈ w UBCMF࿈݁ϦετͷϙΠϯλΛอ࣋ w ಉ͡IBTIΛ࣋ͭ߹ɺ࿈݁ϦετΛḷΔ IUUQXXXBMHPMJTUOFU%BUB@TUSVDUVSFT)BTI@UBCMF$IBJOJOH FOUSZ UBCMF LFZ
$IBJOJOHͷ w ࿈݁ϦετͷFOUSZɺNFNPSZ্ͰΕͯஔ w σʔλͷہॴੑ͕͍ FOUSZ UBCMF LFZ
3VCZҎલͷ$IBJOJOH w ํϦετʹͳ͓ͬͯΓɺσʔλͷہॴੑ͕͍ ͚ͩͰͳ͘QSFWϙΠϯλͳͲͷ͚ͩFOUSZͷσʔ λ͕Ͱ͔͍ͷ IUUQTEFWFMPQFSTSFEIBUDPNCMPHUPXBSETGBTUFSSVCZIBTIUBCMFT UBCMF FOUSZ FOUSZ FOUSZ
3VCZҎલͷ$IBJOJOH w ํϦετʹͳ͓ͬͯΓɺσʔλͷہॴੑ͕͍ ͚ͩͰͳ͘QSFWϙΠϯλͳͲͷ͚ͩFOUSZͷσʔ λ͕Ͱ͔͍ͷ IUUQTEFWFMPQFSTSFEIBUDPNCMPHUPXBSETGBTUFSSVCZIBTIUBCMFT UBCMF FOUSZ FOUSZ FOUSZ
͍
0QFO"ESFTTJOHͷΈ w UBCMFFOUSZͷQPJOUFSΛอ࣋ w ಉ͡IBTIΛ࣋ͭ߹ɺJOEFYΛͣΒ͢ FOUSZ UBCMF LFZ IUUQXXXBMHPMJTUOFU%BUB@TUSVDUVSFT)BTI@UBCMF0QFO@BEESFTTJOH
3VCZͷ0QFO"ESFTTJOH UBCMF FOUSJFT TUBSU CPVOE w UBCMF FOUSJFT͕྆ํ"SSBZʹͳ͓ͬͯΓσʔλͷہॴ ੑ͕ߴ͘ɺͭͭͷFOUSZͷσʔλαΠζখ͍͞ IUUQTEFWFMPQFSTSFEIBUDPNCMPHUPXBSETGBTUFSSVCZIBTIUBCMFT
3VCZͷ0QFO"ESFTTJOH UBCMF FOUSJFT TUBSU CPVOE w UBCMF FOUSJFT͕྆ํ"SSBZʹͳ͓ͬͯΓσʔλͷہॴ ੑ͕ߴ͘ɺͭͭͷFOUSZͷσʔλαΠζখ͍͞ ߴԽ
3VCZͰߋʹࡉ͔͘࠷దԽ w ͕݅গͳ͍࣌ͷ࠷దԽʢলϝϞϦɺߴԽʣ w ͕݅গͳ͍࣌BSSBZͭͰMJOFBSTFBSDI w ͕݅গͳ͍࣌CJU CJUͳͲͰJOEFYΛදݱ w 'VMMDZDMFMJOFBSDPOHSVFOUJBMHFOFSBUPSΛ
TFDPOEBSZIBTIͱͯ͠ར༻ w ߴ͔ͭIBTIͱͯ͠ͷੑೳྑ͍
w 3VCZͱύϑΥʔϚϯε w 3VCZͰͷϋογϡςʔϒϧߴԽͱͦͷԸܙ w ߴԽͲ͏࣮ݱ͞Εͨͷ͔ʁ w ·ͱΊ ࠓ͢༰
·ͱΊ w 3VCZϋογϡςʔϒϧ͕ܶతʹߴԽɻ࣮ࡍ ʹΞϓϦέʔγϣϯߴԽɻ w 3VCZʹͯ͠շదͳ3VCZϥΠϑΛૹΖ͏ʂ
ࢀߟϦϯΫ w 3VCZϦϦʔε w IUUQTXXXSVCZMBOHPSHKBOFXT SVCZSFMFBTFE w 'FBUVSF)BTIUBCMFTXJUIPQFOBESFTTJOH w IUUQTCVHTSVCZMBOHPSHJTTVFT
w 5PXBSET'BTUFS3VCZ)BTI5BCMFT w IUUQTEFWFMPQFSTSFEIBUDPNCMPHUPXBSET GBTUFSSVCZIBTIUBCMFT