Copy-on-Write

最適化
技術用語
技法・アルゴリズム
2024/01/10 12:05
Empty
Empty
Empty
Empty
9 more properties
コピーオンライトは、処理速度を最適化する仕組みのひとつで、値のコピーを要求されても、表向きには値をコピーしたように見せてひとつのデータを参照しておき、コピー先やコピー元の値のどちらかが変更されるときになって初めて、実際に値のコピーを行う仕組みです。
これにより、値が大きなデータだったりしたときにでも、値を参照する限りは実際のデータをコピーする処理が必要なくなり、処理効率を向上できます。
Swift では、値型
Array
Dictionary
などの構造体で採用されていて、これらの値を変数や引数に幾度と渡したとしても、書き換えない限りは内容のコピーが行われないため、効率よく値を受け渡すことが可能になります。

自作の型を Copy-On-Write に対応させるためのヒント

Swift では、標準ライブラリーに
isKnownUniquelyReferenced
という関数が用意されていて、これを用いて自作の値型に Copy-On-Write の機能を実装しやすくなっています。