キャッシュの話

Estraier作者の開発メモが面白い。
特にキャッシュのフラッシュその参が興味深かった。丁度、自分が作っているソフトで「キャッシュを増やしても性能が上がらない」という状況になっていたからだ。
一通り読んだ後に、頭に残ったのは

      保持コスト
頻出語    大
一般語    小
特異語    小

という表だった。この表が性能が上がらない原因を表していた。キャッシュのコストパフォーマンスを考えず、適当にキャッシュを行っていたのだ。

さて、キャッシュのコストパフォーマンス(=メリット/コスト)とは何だろうか?

メリット
書き込み回数の削減
コスト
使用メモリ量の増加

だと思う。データをフラッシュする瞬間の、各要素に対する具体的な数値は

メリット
次回フラッシュ時に同じ要素が現れる確率=min(前回のフラッシュ後の要素の出現確率*次回フラッシュ時までに読み込む要素の数,1.0)
コスト
要素のメモリ使用量

つまり、
(min(前回のフラッシュ後の要素の出現確率*次回フラッシュ時までに読み込む要素の数,1.0)/メモリ使用量 )が少ない要素を優先的にフラッシュすれば良い。

・・・・という気がしてきた。
後で試してみよう。