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
How to achieve parallel compilation in Go 1.9
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Koki Ide
November 05, 2017
Technology
6
6.9k
How to achieve parallel compilation in Go 1.9
Go Conference 2017 @JP の発表資料です。
Koki Ide
November 05, 2017
Tweet
Share
More Decks by Koki Ide
See All by Koki Ide
次世代のコンテナランタイム!?gVisorのコードを読みながら理解してみる
niconegoto
6
6.3k
How Communicating Sequential Goroutines Work
niconegoto
2
19k
Let's Realm
niconegoto
0
500
Other Decks in Technology
See All in Technology
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
20260204_Midosuji_Tech
takuyay0ne
1
160
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
550
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
マネージャー視点で考えるプロダクトエンジニアの評価 / Evaluating Product Engineers from a Manager's Perspective
hiro_torii
0
160
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
1
170
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
190
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
4
460
Red Hat OpenStack Services on OpenShift
tamemiya
0
130
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
390
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
Featured
See All Featured
Writing Fast Ruby
sferik
630
62k
The Invisible Side of Design
smashingmag
302
51k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
100
Are puppies a ranking factor?
jonoalderson
1
2.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
The Pragmatic Product Professional
lauravandoore
37
7.1k
Optimizing for Happiness
mojombo
379
71k
WENDY [Excerpt]
tessaabrams
9
36k
Transcript
How to achieve parallel compilation in Go 1.9
,PLJ*EF !OJDPOFHPUP 'MBUU *OD TPQIPNPSFPGUIF6OJWFSTJUZPG5PLZP
ࠓͷΞδΣϯμ ɾίϯύΠϧͬͯͲ͏Δͷ͔ͬ͘͟Γ͓͞Β͍ ɾ(PͰ͍ͬͨQBSBMMFMJ[FDPNQJMBUJPOͷઆ໌ ɾ(Pͬͯ͢Β͍͠
1BSBMMFMJ[F$PNQJMBUJPO (P3FMFBTFE
1BSBMMFMJ[F$PNQJMBUJPO TZOD.BQ͚ͩ͡Όͳ͍Αʂʂ
1BSBMMFMJ[F$PNQJMBUJPO %POPUDPNNVOJDBUFCZTIBSJOHNFNPSZ JOTUFBE TIBSFNFNPSZCZDPNNVOJDBUJOH
%POPUDPNNVOJDBUFCZTIBSJOHNFNPSZ JOTUFBE TIBSFNFNPSZCZDPNNVOJDBUJOH 1BSBMMFMJ[F$PNQJMBUJPO
1BSBMMFMJ[F$PNQJMBUJPO σϑΥͰฒྻίϯύΠϧ (0$0/$633&/5$0.1*-"5*0/ɹ·ͨHDqBHTDͰແޮʹͰ͖Δ HDqBHTDHPSPVUJOFੜ͞Εͣฒߦੑ͕ͳ͍
$PODVSSFODZ.PEFM DNEDPNQJMFJOUFSOBMHD DNEDPNQJMFJOUFSOBMTTB DNEDPNQJMFJOUFSOBMTZOUBY ͋ͨΓΛಡΉ
1BSBMMFMJ[F$PNQJMBUJPO ͓͞Β͍ จࣈྻͱͯ͠ͷϓϩάϥϜ YZ ୯ޠྻͱͯ͠ͷϓϩάϥϜ *% lYz &2'MPBU
1-64*% lZz 5*.&4*OU நߏจ ࣈ۟ղੳ ߏจղੳ
1BSBMMFMJ[F$PNQJMBUJPO ͓͞Β͍ நߏจ நߏจ ܕͳͲͷՃใ Ծ໋ྩྻ ػցޠίʔυ ҙຯղੳ தؒίʔυੜɾ࠷దԽ ػցޠίʔυੜ
UZ Y U '3Z '3'3 '3'3 Y'3
ॳظԽ DNEDPNQJMFJOUFSOBMTZOUBYࣈ۟ղੳͱߏจղੳ DNEDPNQJMFJOUFSOBMHD"45ͷม ܕνΣοΫɺΤεέʔϓղੳɺΠϯϥΠϯల։ɺΫϩʔδϟʔॲཧɺࣜධՁͷॱং͚ʢPSEFSHPʣɺ࠷దԽʢXBMLHPʣ DNEDPNQJMFJOUFSOBMTTB44"ܗࣜͷม 44"ܗࣜͷ࠷దԽ 44"ܗ͔ࣜΒΞηϯϒϥͷม Ξηϯϒϥ͔ΒϚγϯίʔυͷม Ϛγϯίʔυɺ%8"3'γϯϘϧɺܕͱϦϑϨΫγϣϯͷใɺΤΫεϙʔτσʔλͳͲͷग़ྗ 1BSBMMFMJ[F$PNQJMBUJPO
$PNQJMFͷखॱ
DNEDPNQJMFJOUFSOBMTZOUBY"45ͷࣈ۟ղੳͱߏจղੳ 1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ ˠطʹHPͰฒྻԽࡁΈ
DNEDPNQJMFJOUFSOBMHD"45ͷม 1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ ˠআ༧ఆ
ࣜධՁͷॱং͚ʢPSEFSHPʣɺ࠷దԽʢXBMLHPʣ 1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ ˠDPODVSSFODZTBGFʹ࣮ߦ͢Δ͜ͱ͕͘͠ɺͦ͜·Ͱ͘ͳ͍ͷͰύε
DNEDPNQJMFJOUFSOBMTTB44"ܗࣜͷม 44"ܗࣜͷ࠷దԽ 1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ ˠϘτϧωοΫ
1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ ϑΣʔζ͕શͯͷؔʹର͔ͯྃͯ͠͠Β͜ΕΒΛಉ࣌ʹ࣮ߦ͢Δɻ DNEDPNQJMFJOUFSOBMTTB44"ܗࣜͷม 44"ܗࣜͷ࠷దԽ 44"ܗ͔ࣜΒΞηϯϒϥͷม Ξηϯϒϥ͔ΒϚγϯίʔυͷม
1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ Ϛγϯίʔυɺ%8"3'γϯϘϧɺܕͱϦϑϨΫγϣϯͷใɺΤΫεϙʔτσʔλͳͲͷग़ྗ ͜͜ͰϝιουϥούʔͳͲͷ৽͍͕ؔࣗ͠ಈੜ͞ΕɺdͷॲཧʹਐΉɻ ࠷ॳ͜ͷࣗಈੜͷؔʹؔͯ͠ฒྻίϯύΠϧ͞Ε͍ͯͳ͔͕ͬͨޙ $- ʹ࣮͞Εͨɻ
ɾฒྻίϯύΠϧΛ҆શʹߦ͏ͨΊͷNVUFYͷՃ ɾݱঢ়ͷίϯύΠϥͷάϩʔόϧมΛඇάϩʔόϧʹมߋ͢Δ ɾdͷ࡞ۀΛฒྻԽ ɾෳࡶͳؔΛઌʹίϯύΠϧ͢ΔΑ͏ʹ͢Δ ɾࣗಈੜ͞ΕͨؔฒྻίϯύΠϧ ύϑΥʔϚϯεˋ্ ɾͦͷଞࡉ͔͍࠷దԽमਖ਼ ZZFSSPSΛ͍ͬͯΔ෦Λ'BUBMGʹมߋ
ɾ$ͱ1ͷΛมԽͤͨ͞ࡍͷੳ 1BSBMMFMJ[F$PNQJMBUJPO ͬͨ͜ͱ
ɾฒྻίϯύΠϧΛ҆શʹߦ͏ͨΊͷNVUFYͷՃ ɾݱঢ়ͷίϯύΠϥͷάϩʔόϧมΛඇάϩʔόϧʹมߋ͢Δ ɾdͷ࡞ۀΛฒྻԽ ɾࣗಈੜ͞ΕͨؔฒྻίϯύΠϧ ύϑΥʔϚϯεˋ্ ɾͦͷଞࡉ͔͍࠷దԽमਖ਼ ZZFSSPSΛ͍ͬͯΔ෦Λ'BUBMGʹมߋ ɾ$ͱ1ͷΛมԽͤͨ͞ࡍͷੳ
1BSBMMFMJ[F$PNQJMBUJPO ͬͨ͜ͱ
1BSBMMFMJ[F$PNQJMBUJPO NVUFYͷՃ HDGVODTZNTNV HD"45͔Β44"ͷม࣌ɺ ύοέʔδݕࡧ࣌ʹ༻͞ΕΔ
1BSBMMFMJ[F$PNQJMBUJPO HDMBSHF4UBDL'SBNFT.Vɻ 44"ίϯύΠϧޙʹؔͷελο ΫϑϨʔϜ͕ڊେͰ͋Δ͜ͱΛൃ ݟͨ͠ࡍʹ༻͍ΒΕ·͢ɻ NVUFYͷՃ
1BSBMMFMJ[F$PNQJMBUJPO PCK-JOLIBTINV DUYUIBTI UZQFT4ZNT ίϯύΠϥγϯϘϧ ͔Β PCK-4ZNT ϦϯΧγϯϘϧ ͷ ϚοϐϯάΛ֨ೲ͍ͯͯ͠ɺ͔ͳΓසൟʹ
ΞΫηε͞ΕΔɻ NVUFYͷՃ
1BSBMMFMJ[F$PNQJMBUJPO HDTJHOBUTFUNV TJHOBUTFUϚοϓ%8"3'ੜ࣌ ʹΘΕͯΔ͜ͱ͔ͬͨΜͰ ͕ͪ͢ΐͬͱৄ͍͠༻ঢ়گΘ͔ Βͳ͔ͬͨͷͰޙͰͬͱௐͯ ه͠·͢ɻ NVUFYͷՃ
1BSBMMFMJ[F$PNQJMBUJPO HDUZQFQLHNV όοΫΤϯυͷίϯύΠϧ࣌ %8"3'ੜ࣌ʹUZQFTύοέʔδ ͷγϯϘϧͷݕࡧΑ͘ߦΘΕΔɻ NVUFYͷՃ
1BSBMMFMJ[F$PNQJMBUJPO UZQFTJOUFSOFE4USJOHTNV HD"45͔Β44"ͷม44"ૢ࡞ ʹ͓͍ͯɺBMMPDBUJPOΛݮΒͨ͢Ίʹ ໊લΛࢦఆͨ͠৽͍͠BVUPUNQT͕ಋ ೖ͞Ε͍ͯͯɺUZQFTJOUFSOFE4USJOHT Λอޢ͢Δඞཁ͕͋Δɻ NVUFYͷՃ
ɾฒྻίϯύΠϧΛ҆શʹߦ͏ͨΊͷNVUFYͷՃ ɾݱঢ়ͷίϯύΠϥͷάϩʔόϧมΛඇάϩʔόϧʹมߋ͢Δ ɾdͷ࡞ۀΛฒྻԽ ɾࣗಈੜ͞ΕͨؔฒྻίϯύΠϧ ύϑΥʔϚϯεˋ্ ɾͦͷଞࡉ͔͍࠷దԽमਖ਼ ZZFSSPSΛ͍ͬͯΔ෦Λ'BUBMGʹมߋ ɾ$ͱ1ͷΛมԽͤͨ͞ࡍͷੳ
1BSBMMFMJ[F$PNQJMBUJPO ͬͨ͜ͱ
$PODVSSFODZ.PEFM %POPUDPNNVOJDBUFCZTIBSJOHNFNPSZ JOTUFBE TIBSFNFNPSZCZDPNNVOJDBUJOH
$PODVSSFODZ.PEFM ͜ͷ$-ޙʹHDqBHTͷQ Dʹͳ͍ͬͯΔ 1ϓϩηε $ฒߦॲཧ D͕૿Ճ͢Δͱ$16ίετ૿Ճ͢ΔͨΊD͕εΠʔτεϙοτ
$PODVSSFODZ.PEFM ʢʣΑΓଟ͘ͷؔΛಉ࣌ʹίϯύΠϧ͢Δ ʢʣ࠷͍ؔ ͍ؔ ͷίϯύΠϧ࣌ؒͷվળ ʢʣίϯύΠϥͷΓͷγϦΞϧͳ෦ΛߴԽ͢Δ ʢʣେ͖ͳࣗಈੜؔ JOJU Λখ͞ͳͷʹࣗಈతʹׂ͢Δ ύϑΥʔϚϯεվળ
'MBUUͰ(PΛॻؒ͘Λืू͍ͯ͠·͢ qBUUUW
,PLJ*EF !OJDPOFHPUP 'MBUU*OD TPQIPNPSFPGUIF6OJWFSTJUZPG5PLZP