generated at
データ指向設計

CPUキャッシュを最大限活用できる
キャッシュはメモリから一度に周辺のデータ(キャッシュブロック)もとってくる。
メモリとCPUの性能差があるので、なるべくとってくる回数は減らしたい気持ちがある
オブジェクト指向だと反復する単位がでかすぎてキャッシュミスが頻繁に発生する。
データ思考設計だと、同じ種類のデータを配列としてまとめておく。
Enemyに含まれるHP攻撃力、これらのステータスプリミティブなデータだから反復単位が小さい
Enemy全体でステータスごとに配列で集約して反復すると、キャッシュが最大限に活用される。
また、データの逐次処理のみを考えていくのでステートレス
実装するのは、関数になる。
関数ステートレスにできるので、参照透過性がある
真の意味でのユニットテストができる!!
オブジェクト指向の難しい設計速度ボトルネックに囚われずに済む。
ただし、非直感的設計を要するので、慣れるまでが厳しい、とされている。

参考

近年Unityではこのデータ指向設計を取り込んだDOTSを開発している。
Monobehaviorはこれに置き変わる....?かも?
それゆえ設計の管理が楽!
Unmanaged Memoryがある!
キャッシュも活かせるので速度が速い!
Unity Physicsを活用すると、マルチスレッドにも関わらず、決定的物理シミュレーションを使用することができる。
これはデータ指向設計を採用したため

参考