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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
po3rin
May 27, 2019
Programming
4
880
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
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
1.2k
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
460
嗚呼、当時の本番環境の状態で AI Agentを再評価したいなぁ...
po3rin
0
520
Temporal Knowledge Graphで作る! 時間変化するナレッジを扱うAI Agentの世界
po3rin
5
1.8k
自作LLM Native GORM Pluginで実現する AI Agentバックテスト基盤構築
po3rin
2
880
麻雀点数計算問題生成タスクから学ぶ Single Agentの限界と Agentic Workflowの底力
po3rin
5
2.9k
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
1.2k
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
4
2.7k
M3におけるCI/CDパイプラインを新鮮に保つ仕組み
po3rin
0
410
Other Decks in Programming
See All in Programming
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
0
180
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
510
Rで始めるML・LLM活用入門
wakamatsu_takumu
0
150
New in Go 1.26 Implementing go fix in product development
sunecosuri
0
310
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
180
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
320
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
200
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.3k
文字コードの話
qnighy
43
17k
「やめとこ」がなくなった — 1月にZennを始めて22本書いた AI共創開発のリアル
atani14
0
350
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
270
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
2
180
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
270
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
79
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
170
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
59
50k
WENDY [Excerpt]
tessaabrams
9
36k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
110
Ruling the World: When Life Gets Gamed
codingconduct
0
160
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Why Our Code Smells
bkeepers
PRO
340
58k
KATA
mclloyd
PRO
35
15k
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