Slide 1

Slide 1 text

Tomoki Ota ʲGoݴޠʳmap

Slide 2

Slide 2 text

mapͱ͸? 2

Slide 3

Slide 3 text

mapͱ͸ʁ 3

Slide 4

Slide 4 text

mapͱ͸ʁ 4

Slide 5

Slide 5 text

mapͱ͸ʁ GoͰ͸ɺmap͸ϋογϡςʔϒϧͷσʔλߏ଄ʹجͮ͘ 5

Slide 6

Slide 6 text

mapͱ͸ʁ ಺෦తʹϋογϡςʔϒϧ͸ɺόέοτ΁ͷϙΠϯλͷ഑ྻ ֤όέοτ͸Ωʔͱ஋ͷϖΞΛ8ͭ࣋ͭ 6

Slide 7

Slide 7 text

mapͷϋογϡςʔϒϧ map[string]intͷόέοτ0ʹ஫໨ͨ͠ϋογϡςʔϒϧදݱͷྫ 7 hash(“two") = 0

Slide 8

Slide 8 text

ཁૉͷૠೖ 8 ผͷཁૉͷ map[string]intͷόέοτ0ʹ஫໨ͨ͠ϋογϡςʔϒϧදݱͷྫ

Slide 9

Slide 9 text

ཁૉͷૠೖ(όέοτ͕͍ͬͺ͍ͷͱ͖) 9

Slide 10

Slide 10 text

ಡΈग़͠ɺߋ৽ɺ࡟আͷܭࢉྔ 10 Λόέοτͷ૯਺ͱ͢Δͱɺ (σϑΥϧτ͸1ɺΦʔόϑϩʔ࣌͸ෳ਺ͷόέοτ) p ࠷ѱ࣌ؒܭࢉྔ͸ ͱͳΔ O(p)

Slide 11

Slide 11 text

ॳظԽ

Slide 12

Slide 12 text

ॳظԽ

Slide 13

Slide 13 text

100ສݸͷཁૉͷ௥Ճ Ϛοϓ͕ࣗಈͰ֦େͯ͠ɺόέοτΛอ࣋͢Δ഑ྻ͕2ഒͱͳΔ

Slide 14

Slide 14 text

Ϛοϓ͕֦େ͢Δ৚݅ ഑ྻͷཁૉ͝ͱʹόέοτ͕อ࣋͢Δཁૉ਺ͷฏۉ਺(Load Factor)͕ ͋Δఆ਺஋(ݱঢ়͸6.5ɻ໿80%)ΑΓ΋େ͖͍ͱ͖ Φʔόʔϑϩʔ͍ͯ͠Δ഑ྻ಺ͷཁૉ͕ͱͯ΋େ͖͍ͱ͖

Slide 15

Slide 15 text

Ωʔͷૠೖͷܭࢉྔ 15 Ϛοϓ͕֦େ͢Δͱ͖ɺશͯͷΩʔ͕શͯͷόέοτ΁࠶഑ஔ͢Δɻ ΛϚοϓͷཁૉͷ૯਺ͱ͢Δͱ n ࠷ѱ࣌ؒܭࢉྔ͸ ͱͳΔ O(n)

Slide 16

Slide 16 text

ॳظԽ 16 makeͰॳظԽ͢Δ

Slide 17

Slide 17 text

ॳظԽ 17

Slide 18

Slide 18 text

ॳظԽ 18 αΠζnΛࢦఆ͢ΔͱɺGoϥϯλΠϜʹগͳ͘ͱ΋nݸͷཁૉΛ อ࣋Ͱ͖ΔϚοϓΛׂΓ౰ͯΔΑ͏ʹཁٻ͢Δɻ ❌ ࠷େnݸͷཁૉΛ࣋ͭϚοϓΛ࡞Δ

Slide 19

Slide 19 text

mapͱϝϞϦʔϦʔΫ

Slide 20

Slide 20 text

mapͱϝϞϦʔϦʔΫ

Slide 21

Slide 21 text

mapͱϝϞϦʔϦʔΫ 1. ۭϚοϓΛׂΓ౰ͯΔ 2. 100ສݸͷཁૉΛ௥Ճ͢Δ 3. શͯͷཁૉΛऔΓআ͍ͯɺGCΛ࣮ߦͤ͞Δ 4. ֤εςοϓͷޙɺώʔϓͷେ͖͞(Mb)Λදࣔ

Slide 22

Slide 22 text

mapͱϝϞϦʔϦʔΫ 1. ۭϚοϓΛׂΓ౰ͯΔ 2. 100ສݸͷཁૉΛ௥Ճ͢Δ 3. શͯͷཁૉΛऔΓআ͍ͯɺGCΛ࣮ߦͤ͞Δ 4. ֤εςοϓͷޙɺώʔϓͷେ͖͞(Mb)Λදࣔ

Slide 23

Slide 23 text

mapͱϝϞϦʔϦʔΫ 1. ۭϚοϓΛׂΓ౰ͯΔ 2. 100ສݸͷཁૉΛ௥Ճ͢Δ 3. શͯͷཁૉΛऔΓআ͍ͯɺGCΛ࣮ߦͤ͞Δ 4. ֤εςοϓͷޙɺώʔϓͷେ͖͞(Mb)Λදࣔ

Slide 24

Slide 24 text

GoͷϚοϓ͸runtime.hmapߏ଄ମ΁ͷϙΠϯλɻ ͜ͷߏ଄ମʹ͸ɺϚοϓ಺ͷόέοτ਺Λࣔ͢BϑΟʔϧυͳͲෳ਺ͷϑΟʔϧυ͕͋Δɻ mapͱϝϞϦʔϦʔΫ

Slide 25

Slide 25 text

mapͱϝϞϦʔϦʔΫ

Slide 26

Slide 26 text

100ສݸͷཁૉΛ௥Ճ͢Δ → Bͷ஋͸18ɺ όέοτͱͳΔ 100ສݸͷཁૉΛऔΓআ͘ → B͸18ͷ··ɻΏ͑ʹɺϚοϓ͸·ͩಉ͡਺ͷόέοτΛอ࣋͢Δ 218 = 262144 mapͱϝϞϦʔϦʔΫ

Slide 27

Slide 27 text

mapͱϝϞϦʔϦʔΫ 1࣌ؒ෼ͷσʔλΛอଘ͢Δͱ͢Δɻେن໛ͳϓϩϞʔγϣϯΛߦ ͏৔߹ɺ1࣌ؒޙʹ͸ɺ਺ඦສਓͷ͓٬༷͕γεςϜʹ઀ଓ͢Δ͔ ΋͠Εͳ͍ɻ͔͠͠ɺϓϩϞʔγϣϯͷ਺೔ޙ΋ɺϐʔΫ࣌ͱಉ ͡਺ͷόέοτ͕Ϛοϓʹอ࣋͞Εͨ··ʹͳΔɻ͜ͷΑ͏ͳγ φϦΦͷ৔߹ɺϝϞϦͷফඅྔ͕େ෯ʹݮগͤͣɺϝϞϦͷফඅ͕ ଟ͘ͳΔɻ

Slide 28

Slide 28 text

ݱࡏͷϚοϓͷίϐʔΛఆظతʹ࠶࡞੒͢Δ mapܕ͕഑ྻͷϙΠϯλΛอ࣋͢ΔΑ͏ʹมߋ͢Δ ख࡞ۀͰ࠶ىಈͨ͘͠ͳ͍৔߹

Slide 29

Slide 29 text

͓·͚

Slide 30

Slide 30 text

͓·͚ όέοτʹ8ݸ·Ͱ֦େ͞Ε͍ͯΔͱ͜Ζʹɺ্ͷΑ͏ʹΞαΠϯ͢Δ৔߹Λߟ͑Δ

Slide 31

Slide 31 text

͓·͚

Slide 32

Slide 32 text

͓·͚

Slide 33

Slide 33 text

͓·͚ 1. ϋογϡ஋ͷੜ੒ 2. ֨ೲ͢Δόέοτͷબ୒ 3. tophashͷੜ੒ 4. tophashΛར༻ͯ͠ॻ͖ࠐΉ΂͖ϝϞϦҐஔΛಛఆ 5. ৽͍͠όέοτͷ௥ՃͱνΣʔϯ

Slide 34

Slide 34 text

ϋογϡ஋ͷੜ੒

Slide 35

Slide 35 text

֨ೲ͢Δόέοτͷબ୒

Slide 36

Slide 36 text

tophashͷੜ੒

Slide 37

Slide 37 text

tophashͷੜ੒

Slide 38

Slide 38 text

tophashΛར༻ͯ͠ॻ͖ࠐΉ΂͖ϝϞϦҐஔΛಛఆ

Slide 39

Slide 39 text

৽͍͠όέοτͷ௥ՃͱνΣʔϯ