オブジェクト指向プログラミングはCPUに優しくないです。
データ指向プログラミングがパフォーマンス問題への解法の一つになります。
メッセージパッシングはオブジェクト指向の基本パーツです。そしてメモリ配置はいじれない言語が多いです。
つまり、高級オブジェクト指向言語は CPUに優しくない のです。
ではどうすればCPUに優しいプログラムになるのか。
ここではパラダイムの変換による根本的な解決法を提示します。
それがData Oriented Programmingです。(!= Data Driven Programming!)
さて、これがどんな影響を及ぼすのでしょうか。tmlibのアクセスが遅かった理由を考えてみましょう。
そうです、間接参照を何度も行うことで、キャッシュミスが起きたことですね。
では、DOPではどうなるのでしょうか。
DOPでは、加工関数に対して、データが直列に並んでいます。逐次アクセスです。さらに、加工関数に対して、必要最小限のデータを渡すわけです。結果、キャッシュミスはOOPに比べておきにくいです。
DOPが威力を発揮するのは、同一データに同一処理を行う場合です。例えばゲームですと、画面上に現れる移動体には、位置、姿勢、生死etc...同一のデータが大量にあります。さらに画面更新毎に実行される訳です。
まさに適任です。
ですが、画面上のUIに関しては勝手が違います。例えばボタン、OKボタンとCancelボタンは押した際の挙動が違います。似たデータですが、同一処理ではありません。ボタンという概念が、他の概念を呼び出すわけです。これはオブジェクト指向のメッセージパッシングと同じ、よって この場合、OOPが適切です。