Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How to achieve parallel compilation in Go 1.9

Koki Ide
November 05, 2017

How to achieve parallel compilation in Go 1.9

Go Conference 2017 @JP の発表資料です。

Koki Ide

November 05, 2017
Tweet

More Decks by Koki Ide

Other Decks in Technology

Transcript

  1. How to achieve parallel compilation in Go 1.9

    View Slide

  2. ,PLJ*EF !OJDPOFHPUP

    'MBUU *OD
    TPQIPNPSFPGUIF6OJWFSTJUZPG5PLZP

    View Slide

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

    View Slide

  4. 1BSBMMFMJ[F$PNQJMBUJPO

    (P3FMFBTFE

    View Slide

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

    View Slide

  6. 1BSBMMFMJ[F$PNQJMBUJPO
    %POPUDPNNVOJDBUFCZTIBSJOHNFNPSZ
    JOTUFBE TIBSFNFNPSZCZDPNNVOJDBUJOH

    View Slide

  7. %POPUDPNNVOJDBUFCZTIBSJOHNFNPSZ
    JOTUFBE TIBSFNFNPSZCZDPNNVOJDBUJOH
    1BSBMMFMJ[F$PNQJMBUJPO

    View Slide

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

    View Slide

  9. $PODVSSFODZ.PEFM
    DNEDPNQJMFJOUFSOBMHD

    DNEDPNQJMFJOUFSOBMTTB
    DNEDPNQJMFJOUFSOBMTZOUBY
    ͋ͨΓΛಡΉ

    View Slide

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

    ந৅ߏจ໦
    ࣈ۟ղੳ
    ߏจղੳ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. ɾฒྻίϯύΠϧΛ҆શʹߦ͏ͨΊͷNVUFYͷ௥Ճ

    ɾݱঢ়ͷίϯύΠϥͷάϩʔόϧม਺Λඇάϩʔόϧʹมߋ͢Δ
    ɾdͷ࡞ۀΛฒྻԽ
    ɾෳࡶͳؔ਺ΛઌʹίϯύΠϧ͢ΔΑ͏ʹ͢Δ
    ɾࣗಈੜ੒͞Εͨؔ਺΋ฒྻίϯύΠϧ ύϑΥʔϚϯεˋ޲্

    ɾͦͷଞࡉ͔͍࠷దԽ΍मਖ਼ ZZFSSPSΛ࢖͍ͬͯΔ෦෼Λ'BUBMGʹมߋ

    ɾ$ͱ1ͷ஋ΛมԽͤͨ͞ࡍͷ෼ੳ
    1BSBMMFMJ[F$PNQJMBUJPO
    ΍ͬͨ͜ͱ

    View Slide

  20. ɾฒྻίϯύΠϧΛ҆શʹߦ͏ͨΊͷNVUFYͷ௥Ճ

    ɾݱঢ়ͷίϯύΠϥͷάϩʔόϧม਺Λඇάϩʔόϧʹมߋ͢Δ
    ɾdͷ࡞ۀΛฒྻԽ
    ɾࣗಈੜ੒͞Εͨؔ਺΋ฒྻίϯύΠϧ ύϑΥʔϚϯεˋ޲্

    ɾͦͷଞࡉ͔͍࠷దԽ΍मਖ਼ ZZFSSPSΛ࢖͍ͬͯΔ෦෼Λ'BUBMGʹมߋ

    ɾ$ͱ1ͷ஋ΛมԽͤͨ͞ࡍͷ෼ੳ
    1BSBMMFMJ[F$PNQJMBUJPO
    ΍ͬͨ͜ͱ

    View Slide

  21. 1BSBMMFMJ[F$PNQJMBUJPO
    NVUFYͷ௥Ճ
    HDGVODTZNTNV

    HD"45͔Β44"΁ͷม׵࣌ɺ
    ύοέʔδݕࡧ࣌ʹ࢖༻͞ΕΔ


    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. ɾฒྻίϯύΠϧΛ҆શʹߦ͏ͨΊͷNVUFYͷ௥Ճ

    ɾݱঢ়ͷίϯύΠϥͷάϩʔόϧม਺Λඇάϩʔόϧʹมߋ͢Δ
    ɾdͷ࡞ۀΛฒྻԽ
    ɾࣗಈੜ੒͞Εͨؔ਺΋ฒྻίϯύΠϧ ύϑΥʔϚϯεˋ޲্

    ɾͦͷଞࡉ͔͍࠷దԽ΍मਖ਼ ZZFSSPSΛ࢖͍ͬͯΔ෦෼Λ'BUBMGʹมߋ

    ɾ$ͱ1ͷ஋ΛมԽͤͨ͞ࡍͷ෼ੳ
    1BSBMMFMJ[F$PNQJMBUJPO
    ΍ͬͨ͜ͱ

    View Slide

  28. $PODVSSFODZ.PEFM
    %POPUDPNNVOJDBUFCZTIBSJOHNFNPSZ
    JOTUFBE TIBSFNFNPSZCZDPNNVOJDBUJOH

    View Slide

  29. $PODVSSFODZ.PEFM
    ͜ͷ$-ޙʹ͸HDqBHTͷQ Dʹͳ͍ͬͯΔ

    1ϓϩηε਺
    $ฒߦॲཧ਺
    D͕૿Ճ͢Δͱ$16ίετ΋૿Ճ͢ΔͨΊD͕εΠʔτεϙοτ

    View Slide

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

    View Slide

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

    View Slide

  32. ,PLJ*EF !OJDPOFHPUP

    'MBUU*OD
    TPQIPNPSFPGUIF6OJWFSTJUZPG5PLZP

    View Slide