読者です 読者をやめる 読者になる 読者になる

動的な型定義情報

 XoopsObject は動的プロパティをインスタンス単位で構築しとるんで、結構重い。ただし操作感はイイんよねぇ。いくつかのWebフレームワークは動的プロパティを避けるためにソースコード生成を用いて操作感と速度の両立を図っとる。

 他のやり方としては、データをもっとも高速に扱えるただのバイトの並びとして考え、解釈時にヘッダなどでプロパティを特定するという方法がある。データに動的プロパティやメソッドはなく、代わりにデータ解釈用(あるいはデータ解釈者用の)メタデータを突っ込んどくんじゃけど。

 このやり方は、特に C++ では placement new でノーコストで"いわゆるインスタンス"化ができる便利な手段なんじゃけど、当然どがあな言語でも alloc が減る分パフォーマンスには非常に有利になる。

 なんぼメタデータがついとるとはいえ、素のデータを放置するんはアレじゃけぇ、最低限クラス化しといてデータ操作メソッドを提供し、「データ操作を受けたときに、自動で外部のデータ定義に処理をデリゲートする」という実装方法もある。この実装はパフォーマンスを維持しつつも、外から使うとき、クラスベースのOOPに綺麗に混ざるのがメリット。ただ placement new のない言語では alloc が最適ケースの倍になるはず。まぁでも誤差範囲でしょう。