用語の種類
最適化
大分類
技術用語技法・アルゴリズム
詳細ドキュメント
https://ja.wikipedia.org/wiki/コピーオンライト
連想する用語
Array値型 (Value Types)
最終更新日
2024/01/10 12:05
参考文献
言葉が登場した回
DOWNLOAD
ゆめみ iOS 研修との関連
補足や訂正
配列のアドレス渡しについて部分配列の内部バッファーは共有される
学習の難易度
学習の重要度
コピーオンライトは、処理速度を最適化する仕組みのひとつで、値のコピーを要求されても、表向きには値をコピーしたように見せてひとつのデータを参照しておき、コピー先やコピー元の値のどちらかが変更されるときになって初めて、実際に値のコピーを行う仕組みです。
これにより、値が大きなデータだったりしたときにでも、値を参照する限りは実際のデータをコピーする処理が必要なくなり、処理効率を向上できます。
Swift では、値型 Array や Dictionary などの構造体で採用されていて、これらの値を変数や引数に幾度と渡したとしても、書き換えない限りは内容のコピーが行われないため、効率よく値を受け渡すことが可能になります。
自作の型を Copy-On-Write に対応させるためのヒント
Swift では、標準ライブラリーに isKnownUniquelyReferenced という関数が用意されていて、これを用いて自作の値型に Copy-On-Write の機能を実装しやすくなっています。