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

配列と所有権

Avatar for ojun ojun
April 10, 2026

 配列と所有権

Avatar for ojun

ojun

April 10, 2026

More Decks by ojun

Other Decks in Programming

Transcript

  1. ࠓ೔ൃද͢Δ͜ͱ • Swift Collections ʹ͍ͭͯ • ͦ΋ͦ΋ͷ Array ͷ࢓૊Έʹ͍ͭͯ •

    Copy on Write ͷಈ͖ʹ͍ͭͯͳͲ • Array ͷ՝୊͔Βͷ UniqueArray ͱ RigidArray ͷొ৔ʹ͍ͭͯ
  2. ࣮ݧ؀ڥ • Apple Swift version 6.2 • swiftlang-6.2.0.19.9 • clang-1700.3.19

    • swift-driver version: 1.127.14.1 • Target: arm64-apple-macosx26.0 • Xcode 26.0 (17A324) • Swift Collections: 1.3.0
  3. Swift Collections ʹ͍ͭͯ • Swift Collections ͸ Swift Ͱར༻Մೳͳσʔλߏ଄ͷ֦ுʹॏ఺Λஔ͍ͨOSS •

    Swift ඪ४ϥΠϒϥϦͷ৽ػೳ։ൃΛଅਐ͢ΔͨΊʹ։ൃ͞Εͨ • ͜Ε·Ͱͷ Swift Algorithms ͳͲͱಉ༷ͷྲྀΕ • Swift ඪ४ϥΠϒϥϦ͸ݱࡏɺArrayɺSetɺDictionary ͷॏཁͳ3ͭͷ൚༻σʔλߏ଄͕࣮ ૷͞Ε͍ͯΔ • ޿͍Ϣʔεέʔεʹద͍ͯͯ͠خ͍͠ • ͔͠͠ɺڊେͳߏ଄Λॲཧ͢Δͱ͖ͳͲ෺଍Γͳ͍έʔε͕͋Δ • Swift Collections ʹΑͬͯɺָ&ΑΓߴ଎&৴པੑ΋͋Δίʔυ͕ॻ͚Δ༷ʹͳΔ
  4. Swift Collections ʹ͍ͭͯ • 2025/09/30 ʹ Swift Collections ͷ ver

    1.3 ͕ϦϦʔε͞Εͨ • ࣮૷͞Εͨػೳ͸ෳ਺͋Δ͕ɺࠓճͷൃදͰ͸ UniqueArray ͱ RigidArray ʹয఺Λ౰ͯΔ
  5. UniqueArray ʹ͍ͭͯ • ʮίϐʔͰ͖ͳ͍ಈత഑ྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ

    • ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ൐͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔ͸ಈతʹ૿΍ͤΔʢappend ͳͲͰ reallocation ͸͋Γʣ
  6. UniqueArray ʹ͍ͭͯ • ʮίϐʔͰ͖ͳ͍ಈత഑ྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ

    • ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ൐͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔ͸ಈతʹ૿΍ͤΔʢappend ͳͲͰ reallocation ͸͋Γʣ
  7. UniqueArray ʹ͍ͭͯ • ʮίϐʔͰ͖ͳ͍ಈత഑ྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ

    • ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ൐͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔ͸ಈతʹ૿΍ͤΔʢappend ͳͲͰ reallocation ͸͋Γʣ
  8. A

  9. A A buffer struct B class [1, 2, 3] struct

    buffer [1, 2, 3, 4] 0x00000007aec100a0 0x0000000100c5edc0
  10. A A buffer struct B class [1, 2, 3] struct

    buffer [1, 2, 3, 4] 0x00000007aec100a0 0x0000000100c5edc0
  11. ͦ͜Ͱ UniqueArray • ʮίϐʔͰ͖ͳ͍ಈత഑ྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ

    • ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ൐͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔ͸ಈతʹ૿΍ͤΔʢappend ͳͲͰ reallocation ͸͋Γʣ
  12. ͦ͜Ͱ UniqueArray • ʮίϐʔͰ͖ͳ͍ಈత഑ྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ

    • ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ൐͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔ͸ಈతʹ૿΍ͤΔʢappend ͳͲͰ reallocation ͸͋Γʣ
  13. ͦ͜Ͱ UniqueArray • ʮίϐʔͰ͖ͳ͍ಈత഑ྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ

    • ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ൐͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔ͸ಈతʹ૿΍ͤΔʢappend ͳͲͰ reallocation ͸͋Γʣ
  14. ·ͱΊ • Array ͸൚༻ͰศརͰ͋Δ͕ɺڊେͳ഑ྻΛѻ͏৔߹ʹ CoW ʹΑΔί ετ΍ reallocation ʹΑΔίετ͕໨ཱͭ •

    Swift Collections ʹ௥Ճ͞Εͨ UniqueArray Λར༻͢Δ͜ͱͰ CoW ͷ ίετΛແࢹ͢Δ͜ͱ͕Ͱ͖Δ • ͞Βʹ RigidArray Λར༻͢Δ͜ͱͰ CoW ͷίετͱซͤͯ reallocation ͷίετ΋ແࢹ͢Δ͜ͱ͕Ͱ͖Δ • ͨͩ͠ݻఆ௕ͷ഑ྻʹͳΔ͜ͱʹཹҙ͢Δඞཁ͋Γ