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
Compare Benchmarks and Compiler Optimization I...
Search
po3rin
May 27, 2019
Programming
4
850
Compare Benchmarks and Compiler Optimization In Go
Go(Un) Conference #6
po3rin
May 27, 2019
Tweet
Share
More Decks by po3rin
See All by po3rin
嗚呼、当時の本番環境の状態で AI Agentを再評価したいなぁ...
po3rin
0
370
Temporal Knowledge Graphで作る! 時間変化するナレッジを扱うAI Agentの世界
po3rin
5
1.3k
自作LLM Native GORM Pluginで実現する AI Agentバックテスト基盤構築
po3rin
2
640
麻雀点数計算問題生成タスクから学ぶ Single Agentの限界と Agentic Workflowの底力
po3rin
5
2.6k
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
1.1k
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
4
2.6k
M3におけるCI/CDパイプラインを新鮮に保つ仕組み
po3rin
0
390
Go Templateを使った フロントエンド開発を採用した 経緯と所感
po3rin
1
360
検索基盤移行時の思考
po3rin
0
4.3k
Other Decks in Programming
See All in Programming
オンデバイスAIとXcode
ryodeveloper
0
430
Making Angular Apps Smarter with Generative AI: Local and Offline-capable
christianliebel
PRO
0
110
Claude Code on the Web を超える!? Codex Cloud の実践テク5選
sunagaku
0
340
チームのテスト力を総合的に鍛えてシフトレフトを推進する/Shifting Left with Software Testing Improvements
goyoki
4
2.2k
r2-image-worker
yusukebe
1
150
2026年向け会社紹介資料
misu
0
110
CSC509 Lecture 08
javiergs
PRO
0
280
Amazon Bedrock Knowledge Bases Hands-on
konny0311
0
130
ノーコードからの脱出 -地獄のデスロード- / Escape from Base44
keisuke69
0
660
例外処理を理解して、設計段階からエラーを見つけやすく、起こりにくく #phpconfuk
kajitack
12
5.6k
MCPサーバー「モディフィウス」で変更容易性の向上をスケールする / modifius
minodriven
7
1.3k
Kotlin + Power-Assert 言語組み込みならではのAssertion Library採用と運用ベストプラクティス by Kazuki Matsuda/Gen-AX
kazukima
0
100
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
192
56k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
A designer walks into a library…
pauljervisheath
210
24k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
920
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
Transcript
Compare Benchmarks and Compiler Optimization In Go Go Un Conference
May 27, 2019 @ po3rin
@po3rin Software Enginner @ Shiroyagi Corporation QBHF Golang / Python
/ Rust / Docker / AWS / Elasticsearch
QBHF Introduction \
QBHF 044ʹίϛοτΛࢼΈΔࡍʹɺʮͳͥ ͜ͷ࣮͕ྑ͍͔ʯΛূ໌͢Δҝʹ (Pʹ͓͚ΔϕϯνϚʔΫʹ͍ͭͯௐ ͨͷͰͦΕΛൃද͠·͢ɻ Benchmark of Go Ὂ
QBHF ɾϕϯνϚʔΫΛʮূ໌ʯʹ͑ΔΑ͏ʹͳΔ ɾϕϯνϚʔΫٻ͔ΒίϯύΠϥ࠷దԽΛআ͘ Ὂ the porpose of this talk
QBHF Review how to take a benchmark \
QBHF Review how to take a benchmark Ὂ ֤ϕϯνϚʔΫؔC/ճ෮ ͞Ε·͢ɻσϑΥϧτͰC/
͔Β࢝·Γ·͕͢ɺϕϯνϚʔ Ϋػೳ͕ඵҎʹྃͨ͠߹ C/͕૿Ճͯ͠ϕϯνϚʔΫ͕࠶ ࣮ߦ͞Ε·͢ɻ
QBHF Review how to take a benchmark Ὂ ݁ՌΛݟΔͱͱ͍͏TV⒏Y͕͍͍ͭͯ·͢ɻ͜Ε͜ͷςετΛ࣮ߦ͢ΔͨΊ ʹ༻͞Εͨ(0."9130$4ͷͰ͢ɻ͜ͷσϑΥϧτͰىಈ࣌ʹ(Pϓϩ
ηεʹݟ͑Δ$16ͷʹͳΓ·͢ɻ
QBHF -cpu Ὂ (0."9130$4DQVϑϥάͰมߋͰ͖·͢ɻνʔϜؒͰϕϯνϚʔΫΛ͍ճ ࣌͢$16ͷ͕ϕϯνϚʔΫʹӨڹΛ༩͑ͳ͍Α͏ʹҙ͕ඞཁͰ͢ɻ
QBHF -benchtime Ὂ ෮ճΛ૿͢ҝʹ CFODIUJNFϑϥάΛ༻ ͯ͠ϕϯνϚʔΫ࣌ؒΛ ૿͢͜ͱ͕Ͱ͖·͢ɻ (P͔ΒCFODIUJNF ϑϥά෮ճΛࢦఆ Ͱ͖·͢ɻ
QBHF Benchmark cost avoidance Ὂ C3FTFU5JNFS ͰηοτΞοϓͰ ൃੜ͢ΔίετΛճආͰ͖·͢ɻ ϧʔϓͷ෮͝ͱʹίετ͕ߴ͍ ηοτΞοϓ͕͋Δ߹ɺ
C4UPQ5JNFS ͓Αͼ C4UBSU5JNFS Λ༻͠·͢ɻ
QBHF Check allocations Ὂ ΞϩέʔγϣϯͷͱαΠζɺϕϯνϚʔΫͱڧ͘૬͍ؔͯ͠·͢ɻΞϩέʔ γϣϯͷΛϕϯνϚʔΫͰ֬ೝ͢Δ࣌CFODINFNΛ͍·͢ɻ
QBHF Benchmark stability \
QBHF Benchmark stability Ὂ ඦສ·ͨेԯճ΄Ͳ෮࣮ߦ͞ ΕΔϕϯνϚʔΫ͕OTdNTͷൣғ ͷͳΔ߹ɺϕϯνϚʔΫε έʔϦϯάɺϝϞϦہॴੑͳͲ༷ʑͳ ཁҼʹΑΓෆ҆ఆʹͳ͍ͬͯ·͢ɻ
QBHF Benchmark stability Ὂ ͜ͷΑ͏ͳ߹DPVOUϑ ϥάΛ༻ͯ͠ɺϕϯν ϚʔΫΛෳճ࣮ߦ͢Δ͜ ͱͰϕϯνϚʔΫͷࢄ ؚΊͯ֬ೝ͢Δͷ͕ಘࡦͰ ͢ɻ
QBHF Benchmark stability Ὂ ҰํͰϕϯνϚʔΫͷ҆ఆΛݟΔͷʹศརͳπʔϧ͕͋Γ· ͢ɻ3VTT$PYʹΑΔCFODITUBUͱ͍͏πʔϧΛհ͠·͢ɻ
QBHF Benchmark stability Ὂ CFODITUBUҰ࿈ͷϕϯνϚʔΫ ςετΛ࣮ߦͯ͠ɺͦΕΒ͕ͲΕ ΄Ͳ҆ఆ͍ͯ͠Δ͔Λڭ͑ͯ͘Ε ·͢ɻ
QBHF Comparing benchmarks \
QBHF Comparing benchmarks Ὂ ϕϯνϚʔΫؒͷύϑΥʔϚϯεͷࠩΛஅ͢Δͷ໘Ͱ͕͢ɺ CFODITUBU͜ͷղܾ͠·͢ɻ
QBHF ૣ'JC Λվྑ͍ͨ͠ͷͰ͕͢ɺίʔυΛվྑͨ͠ޙͰɺ ͏ҰվྑલͷϕϯνϚʔΫΛऔΓ͍͕ͨ࣌ग़͖ͯͨΒ Ͳ͏͠·͠ΐ͏͔ɻ࣮HPUFTUʹલճͷϕϯνϚʔΫ݁ ՌΛੜͨ͠όΠφϦΛอଘ͓ͯ͘͜͠ͱ͕Ͱ͖ΔػೳΛ ఏڙ͢ΔDϑϥοά͕ଘࡏ͠·͢ɻվྑલͷόΠφϦ໊ UFTU͔ΒHPMEFOʹมߋ͢Δͷ͕௨ྫͷΑ͏Ͱ͢ɻ -c Ὂ
QBHF ϕϯνϚʔΫΛൺֱ͢Δҝ ʹ࠶ؼݺͼग़͠Λ̍ͭݮΒ ͠·͢ɻ Reduce recursive calls Ὂ
QBHF 'JC Ͱ'JC ͱൺͯͷվྑ͕֬ೝͰ͖·͢ɻιʔείʔυͷมߋ ޙʹͲͷ͘Β͍ͷվળ͕͋ͬͨͷ͔Λূ໌͢Δͷʹ༗༻Ͱ͢ɻࢄ͕େ͖͍ϕϯ νϚʔΫΛൺֱ͢Δͱ͖ҙɻ Comparing benchmarks
Ὂ
QBHF Oɺ༗ޮͩͱݟͳ͞ΕͨσʔλͷݸΛද͠·͢ɻσʔλͷغ٫͕ˋΛ͑ Δͱൺֱ͢Δαϯϓϧ͕গͳ͗͢ΔՄೳੑ͕͋Γ·͢ɻ Q͕Λ͑Δ͜ͱϕϯνϚʔΫ͕౷ܭతʹ༗ҙͰͳ͍͜ͱΛҙຯ͠·͢ɻ Qʹ͍ͭͯԼه͕ৄ͍͠Ͱ͢ɻ ౷ܭֶతݕఆͷ1ɺ౷ܭֶతʹ༗ҙɺ༗ҙࠩɺ༗ҙਫ४ͱԿ͔ʁ IUUQUPVLFJMJOLCBTJDTUBUJTUJDTQWBMVF@BOE@TJHOJpDBODF Comparing benchmarks Ὂ
QBHF Watch out for compiler optimisations \
QBHF ਐͰදͨ͠ͱཱ͖͍ͬͯΔ ϏοτͷΛฦ͠·͢ɻ͜ͷؔ ͷϕϯνϚʔΫΛͱΓ·͠ΐ ͏ɻ compiler optimisations Ὂ
QBHF ͜ͷ݁Ռͷඵ֓ͶΫϩοΫपͰ͢ɻΑͬͯ͜ͷ͔ͳΓ͓͔͍͠Ͱ͢ɻ $16ΫϩοΫ৴߸ʹ߹Θͤͯಈ࡞͠·͢ QPQDOUϦʔϑؔ ଞͷؔݺͼग़͠Λ͠ͳ͍ ʹͳ͍ͬͯ·͢ɻɻίϯύΠϥ͜ ͷؔΛΠϯϥΠϯల։Ͱ͖·͢ɻͦͯ͠QPQDOUɺͲͷάϩʔόϧมͷঢ়ଶʹ Өڹ͠·ͤΜɻ͕ͨͬͯ͠ɺݺͼग़ࣗ͠ମ͕ഉআ͞Ε͍ͯ·͢ɻ compiler
optimisations Ὂ
QBHF ϕϯνϚʔΫΛػೳͤ͞ΔͨΊʹΠϯ ϥΠϯԽΛແޮʹ͢Δ͜ͱଞͷϕϯ νϚʔΫʹӨڹ͕͋ΔͷͰ͓͢͢Ί ͠·ͤΜɻ্̎ͭίϯύΠϥ͕ϧʔ ϓຊମΛ࠷దԽͰ͖ͳ͍Α͏ʹ͢Δͨ Ίͷਪํ๏Ͱ͢ɻ compiler optimisations Ὂ
QBHF JOMJOJOHͳͲͷίϯύΠϥ࠷దԽͷঢ়گΛ֬ೝ͢ΔʹHDqBHTΛ͍·͢ɻ -gcflags Ὂ
QBHF ͞ΒʹڧྗͳJOMJOJOH͕(P͔ΒೖͬͯΔ IUUQTEPDTHPPHMFDPNQSFTFOUBUJPOE8DCMQKQGF,X":'0NK18.@RN/RM2L/B-K1PFEJUTMJEFJEQ Mid Stack inlining Ὂ
QBHF Conclusion \
QBHF (Pʹ͓͚ΔϕϯνϚʔΫ؆୯ʹऔΕΔ͕ɺ͍ํʹҙ͕ඞཁɻ ϕϯνϚʔΫͷڥͷఏࣔ౷Ұ ϕϯνϚʔΫͷ҆ఆੑͷ֬ೝ ͓͔͍͘͠Β͍͍࣌ϕϯνϚʔΫ࣌ͷίϯύΠϥ࠷దԽͷڍಈΛ֬ೝ Conclusion Ὂ
QBHF Additional Talk \
QBHF (P$POGFSFODF'VLVPLB Ͱొஃ͠·͢ʂ
Benchmark and Compiler Optimization In Go Go Un Conference May
27, 2019 @ po3rin