search
LoginSignup
4
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

データ指向なんもわからん!(①なぜデータ指向がいいのか編)

データ指向なんもわからん日記です。
なんもわからんちんなので、間違ってることいってたら、コメントください!おねがいします!

データ指向の起源を考えてみた

なんかこう、巷で多いのってオブジェクト指向ですよね。
データ指向ってのは2009年あたりから出始めたらしいんですけど、なんで生まれたんでしょうか。

ゲームやシステムを作ってると「処理速度がーーー!」ってよく言われますよね。
そういったパフォーマンスを上げるためにハードの方もすごい成長を遂げてるわけです。

1980年のときのCPUに比べて現在のCPUは10000倍(1万倍)のスペックがあるらしいですよ。
いちまんばい!
ですが面白いことに、メモリの性能は10倍も変わってないらしいんですよ。メモリどうした。

image.png
参考

僕はリテラシー低いのでメモリのことも改めて調べましたよ。
データを一時的あるいは永久的に保存することができる物理的デバイス。
そうですね。しってた!

その差を埋めるためにCPUにはキャッシュメモリというものが存在します。

僕はリテラシー低いのでキャッシュメモリのことも(ry
CPUなど処理装置がデータや命令などの情報を取得/更新する際に主記憶装置やバスなどの遅延/低帯域を隠蔽し、処理装置と記憶装置の性能差を埋めるために用いる高速小容量メモリのことである。
つまり、メモリの遅さを隠すために、CPUのキャッシュメモリが一時的に情報をもってくれてて、しかもすばやく更新とかしてくれる。ってことですかね。

メインメモリのデータ取得の遅さ

取得する際は、この図のようにL1キャッシュ、L2キャッシュ、L3キャッシュ…でメモリに到着するわけですけど、この末端のキャッシュ⇔メモリがめっちゃ遅い。CPU⇔キャッシュに比べて25~100倍くらい遅いそうです。メモリがんばれ~><

めもり遅い.png

CPUからメモリへのデータの取り方

CPUがなんらかの処理をする際、このキャッシュメモリがメモリにデータを取りに行きます。
このときキャッシュメモリがメモリから取得するデータは1個ではなく、64バイト程度のデータが同時にロードされるようです。
そのなかに目的のデータがなかった場合、再度別の場所に取りに行くのです。

めもりとる.png

取りに行きたいデータが連続した位置に配置されていたら幸せになると思いませんか?
めもりとる2.png

なるほど。連続で使用するデータは近い位置に配置してくれたほうが絶対いい。

だから...

扱うデータの配置レイアウトや設計にもっと着目してパフォーマンスをあげよう!
というのがデータ指向の起源のようですね。へー。

次はUnityのデータ指向ってなに?から調べてみようと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4
Help us understand the problem. What are the problem?