Slide 1

Slide 1 text

How to achieve parallel compilation in Go 1.9

Slide 2

Slide 2 text

,PLJ*EF !OJDPOFHPUP 'MBUU *OD TPQIPNPSFPGUIF6OJWFSTJUZPG5PLZP

Slide 3

Slide 3 text

ࠓ೔ͷΞδΣϯμ ɾίϯύΠϧͬͯͲ͏΍Δͷ͔ͬ͘͟Γ͓͞Β͍ ɾ(PͰ͸͍ͬͨQBSBMMFMJ[FDPNQJMBUJPOͷઆ໌ ɾ(Pͬͯ͢͹Β͍͠

Slide 4

Slide 4 text

1BSBMMFMJ[F$PNQJMBUJPO 
 (P3FMFBTFE

Slide 5

Slide 5 text

1BSBMMFMJ[F$PNQJMBUJPO TZOD.BQ͚ͩ͡Όͳ͍Αʂʂ

Slide 6

Slide 6 text

1BSBMMFMJ[F$PNQJMBUJPO %POPUDPNNVOJDBUFCZTIBSJOHNFNPSZ JOTUFBE TIBSFNFNPSZCZDPNNVOJDBUJOH

Slide 7

Slide 7 text

%POPUDPNNVOJDBUFCZTIBSJOHNFNPSZ JOTUFBE TIBSFNFNPSZCZDPNNVOJDBUJOH 1BSBMMFMJ[F$PNQJMBUJPO

Slide 8

Slide 8 text

1BSBMMFMJ[F$PNQJMBUJPO σϑΥͰฒྻίϯύΠϧ (0$0/$633&/5$0.1*-"5*0/ɹ·ͨ͸HDqBHTDͰແޮʹͰ͖Δ HDqBHTD͸HPSPVUJOF΋ੜ੒͞Εͣฒߦੑ͕ͳ͍

Slide 9

Slide 9 text

$PODVSSFODZ.PEFM DNEDPNQJMFJOUFSOBMHD
 DNEDPNQJMFJOUFSOBMTTB DNEDPNQJMFJOUFSOBMTZOUBY ͋ͨΓΛಡΉ

Slide 10

Slide 10 text

1BSBMMFMJ[F$PNQJMBUJPO ͓͞Β͍ จࣈྻͱͯ͠ͷϓϩάϥϜ YZ  ୯ޠྻͱͯ͠ͷϓϩάϥϜ *% lYz &2'MPBU  1-64*% lZz 5*.&4*OU  ந৅ߏจ໦ ࣈ۟ղੳ ߏจղੳ

Slide 11

Slide 11 text

1BSBMMFMJ[F$PNQJMBUJPO ͓͞Β͍ ந৅ߏจ໦ ந৅ߏจ໦ ܕͳͲͷ෇Ճ৘ใ Ծ૝໋ྩྻ ػցޠίʔυ ҙຯղੳ தؒίʔυੜ੒ɾ࠷దԽ ػցޠίʔυੜ੒ UZ  Y U '3Z '3'3  '3'3  Y'3

Slide 12

Slide 12 text

ॳظԽ DNEDPNQJMFJOUFSOBMTZOUBYࣈ۟ղੳͱߏจղੳ DNEDPNQJMFJOUFSOBMHD"45΁ͷม׵ ܕνΣοΫɺΤεέʔϓղੳɺΠϯϥΠϯల։ɺΫϩʔδϟʔॲཧɺࣜධՁͷॱং෇͚ʢPSEFSHPʣɺ࠷దԽʢXBMLHPʣ DNEDPNQJMFJOUFSOBMTTB44"ܗࣜ΁ͷม׵ 44"ܗࣜͷ࠷దԽ 44"ܗ͔ࣜΒΞηϯϒϥ΁ͷม׵ Ξηϯϒϥ͔ΒϚγϯίʔυ΁ͷม׵ Ϛγϯίʔυɺ%8"3'γϯϘϧɺܕͱϦϑϨΫγϣϯͷ৘ใɺΤΫεϙʔτσʔλͳͲͷग़ྗ 1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ

Slide 13

Slide 13 text

DNEDPNQJMFJOUFSOBMTZOUBY"45΁ͷࣈ۟ղੳͱߏจղੳ 1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ ˠطʹHPͰฒྻԽࡁΈ

Slide 14

Slide 14 text

DNEDPNQJMFJOUFSOBMHD"45΁ͷม׵ 1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ ˠ࡟আ༧ఆ

Slide 15

Slide 15 text

ࣜධՁͷॱং෇͚ʢPSEFSHPʣɺ࠷దԽʢXBMLHPʣ 1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ ˠDPODVSSFODZTBGFʹ࣮ߦ͢Δ͜ͱ͕೉͘͠ɺͦ͜·Ͱ஗͘ͳ͍ͷͰύε

Slide 16

Slide 16 text

DNEDPNQJMFJOUFSOBMTTB44"ܗࣜ΁ͷม׵ 44"ܗࣜͷ࠷దԽ 1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ ˠϘτϧωοΫ

Slide 17

Slide 17 text

1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ ϑΣʔζ͕શͯͷؔ਺ʹରͯ͠׬͔ྃͯ͠Β͜ΕΒΛಉ࣌ʹ࣮ߦ͢Δɻ DNEDPNQJMFJOUFSOBMTTB44"ܗࣜ΁ͷม׵ 44"ܗࣜͷ࠷దԽ 44"ܗ͔ࣜΒΞηϯϒϥ΁ͷม׵ Ξηϯϒϥ͔ΒϚγϯίʔυ΁ͷม׵

Slide 18

Slide 18 text

1BSBMMFMJ[F$PNQJMBUJPO $PNQJMFͷखॱ Ϛγϯίʔυɺ%8"3'γϯϘϧɺܕͱϦϑϨΫγϣϯͷ৘ใɺΤΫεϙʔτσʔλͳͲͷग़ྗ ͜͜ͰϝιουϥούʔͳͲͷ৽͍ؔ͠਺͕ࣗಈੜ੒͞ΕɺdͷॲཧʹਐΉɻ ࠷ॳ͸͜ͷࣗಈੜ੒ͷؔ਺ʹؔͯ͠͸ฒྻίϯύΠϧ͞Ε͍ͯͳ͔͕ͬͨޙ $- ʹ࣮૷͞Εͨɻ

Slide 19

Slide 19 text

ɾฒྻίϯύΠϧΛ҆શʹߦ͏ͨΊͷNVUFYͷ௥Ճ
 ɾݱঢ়ͷίϯύΠϥͷάϩʔόϧม਺Λඇάϩʔόϧʹมߋ͢Δ ɾdͷ࡞ۀΛฒྻԽ ɾෳࡶͳؔ਺ΛઌʹίϯύΠϧ͢ΔΑ͏ʹ͢Δ ɾࣗಈੜ੒͞Εͨؔ਺΋ฒྻίϯύΠϧ ύϑΥʔϚϯεˋ޲্  ɾͦͷଞࡉ͔͍࠷దԽ΍मਖ਼ ZZFSSPSΛ࢖͍ͬͯΔ෦෼Λ'BUBMGʹมߋ  ɾ$ͱ1ͷ஋ΛมԽͤͨ͞ࡍͷ෼ੳ 1BSBMMFMJ[F$PNQJMBUJPO ΍ͬͨ͜ͱ

Slide 20

Slide 20 text

ɾฒྻίϯύΠϧΛ҆શʹߦ͏ͨΊͷNVUFYͷ௥Ճ
 ɾݱঢ়ͷίϯύΠϥͷάϩʔόϧม਺Λඇάϩʔόϧʹมߋ͢Δ ɾdͷ࡞ۀΛฒྻԽ ɾࣗಈੜ੒͞Εͨؔ਺΋ฒྻίϯύΠϧ ύϑΥʔϚϯεˋ޲্  ɾͦͷଞࡉ͔͍࠷దԽ΍मਖ਼ ZZFSSPSΛ࢖͍ͬͯΔ෦෼Λ'BUBMGʹมߋ  ɾ$ͱ1ͷ஋ΛมԽͤͨ͞ࡍͷ෼ੳ 1BSBMMFMJ[F$PNQJMBUJPO ΍ͬͨ͜ͱ

Slide 21

Slide 21 text

1BSBMMFMJ[F$PNQJMBUJPO NVUFYͷ௥Ճ HDGVODTZNTNV 
 HD"45͔Β44"΁ͷม׵࣌ɺ ύοέʔδݕࡧ࣌ʹ࢖༻͞ΕΔ
 


Slide 22

Slide 22 text

1BSBMMFMJ[F$PNQJMBUJPO HDMBSHF4UBDL'SBNFT.Vɻ 44"ίϯύΠϧޙʹؔ਺ͷελο ΫϑϨʔϜ͕ڊେͰ͋Δ͜ͱΛൃ ݟͨ͠ࡍʹ༻͍ΒΕ·͢ɻ NVUFYͷ௥Ճ

Slide 23

Slide 23 text

1BSBMMFMJ[F$PNQJMBUJPO PCK-JOLIBTINV DUYUIBTI͸ UZQFT4ZNT ίϯύΠϥγϯϘϧ ͔Β PCK-4ZNT ϦϯΧγϯϘϧ ΁ͷ ϚοϐϯάΛ֨ೲ͍ͯͯ͠ɺ͔ͳΓසൟʹ ΞΫηε͞ΕΔɻ NVUFYͷ௥Ճ

Slide 24

Slide 24 text

1BSBMMFMJ[F$PNQJMBUJPO HDTJHOBUTFUNV TJHOBUTFUϚοϓ͸%8"3'ੜ੒࣌ ʹ࢖ΘΕͯΔ͜ͱ͸෼͔ͬͨΜͰ ͕ͪ͢ΐͬͱৄ͍͠࢖༻ঢ়گΘ͔ Βͳ͔ͬͨͷͰޙͰ΋ͬͱௐ΂ͯ ௥ه͠·͢ɻ NVUFYͷ௥Ճ

Slide 25

Slide 25 text

1BSBMMFMJ[F$PNQJMBUJPO HDUZQFQLHNV όοΫΤϯυͷίϯύΠϧ࣌΍ %8"3'ੜ੒࣌ʹUZQFTύοέʔδ ͷγϯϘϧͷݕࡧ͸Α͘ߦΘΕΔɻ NVUFYͷ௥Ճ

Slide 26

Slide 26 text

1BSBMMFMJ[F$PNQJMBUJPO UZQFTJOUFSOFE4USJOHTNV HD"45͔Β44"΁ͷม׵΍44"ૢ࡞ ʹ͓͍ͯɺBMMPDBUJPOΛݮΒͨ͢Ίʹ ໊લΛࢦఆͨ͠৽͍͠BVUPUNQT͕ಋ ೖ͞Ε͍ͯͯɺUZQFTJOUFSOFE4USJOHT Λอޢ͢Δඞཁ͕͋Δɻ NVUFYͷ௥Ճ

Slide 27

Slide 27 text

ɾฒྻίϯύΠϧΛ҆શʹߦ͏ͨΊͷNVUFYͷ௥Ճ
 ɾݱঢ়ͷίϯύΠϥͷάϩʔόϧม਺Λඇάϩʔόϧʹมߋ͢Δ ɾdͷ࡞ۀΛฒྻԽ ɾࣗಈੜ੒͞Εͨؔ਺΋ฒྻίϯύΠϧ ύϑΥʔϚϯεˋ޲্  ɾͦͷଞࡉ͔͍࠷దԽ΍मਖ਼ ZZFSSPSΛ࢖͍ͬͯΔ෦෼Λ'BUBMGʹมߋ  ɾ$ͱ1ͷ஋ΛมԽͤͨ͞ࡍͷ෼ੳ 1BSBMMFMJ[F$PNQJMBUJPO ΍ͬͨ͜ͱ

Slide 28

Slide 28 text

$PODVSSFODZ.PEFM %POPUDPNNVOJDBUFCZTIBSJOHNFNPSZ JOTUFBE TIBSFNFNPSZCZDPNNVOJDBUJOH

Slide 29

Slide 29 text

$PODVSSFODZ.PEFM ͜ͷ$-ޙʹ͸HDqBHTͷQ Dʹͳ͍ͬͯΔ
 1ϓϩηε਺ $ฒߦॲཧ਺ D͕૿Ճ͢Δͱ$16ίετ΋૿Ճ͢ΔͨΊD͕εΠʔτεϙοτ

Slide 30

Slide 30 text

$PODVSSFODZ.PEFM ʢʣΑΓଟ͘ͷؔ਺Λಉ࣌ʹίϯύΠϧ͢Δ ʢʣ࠷΋஗͍ؔ਺ ௕͍ؔ਺ ͷίϯύΠϧ࣌ؒͷվળ ʢʣίϯύΠϥͷ࢒ΓͷγϦΞϧͳ෦෼Λߴ଎Խ͢Δ ʢʣେ͖ͳࣗಈੜ੒ؔ਺ JOJU Λখ͞ͳ΋ͷʹࣗಈతʹ෼ׂ͢Δ ύϑΥʔϚϯεվળ

Slide 31

Slide 31 text

'MBUUͰ͸(PΛॻ͘஥ؒΛืू͍ͯ͠·͢ qBUUUW

Slide 32

Slide 32 text

,PLJ*EF !OJDPOFHPUP 'MBUU*OD TPQIPNPSFPGUIF6OJWFSTJUZPG5PLZP