初老プログラマのぼやき – その3

少し興味を持ってくれた妻から質問があった。
嬉しくなって”例えば残り時間が表示されるゲームで、プレイヤーが慌てている時に読み込み時間が長いと緊迫感が薄まってしまう”等々熱く語った結果引かれた。
とても悲しい。

閃いた

もう10年ほど前の話だ。
ファイルキャッシュを導入したが、周囲の反応はとても薄かった。
「すごい!めちゃくちゃ早いですね」
こんな言葉を聞いてみたい。
私はどうしても読み込み待ち時間を短縮したいと思った。
分かっている問題点はこうだ。

キャッシュメモリのサイズを大きくすると待ち時間は短くなるが、絵や音楽で使える容量が減って表現はグレードダウンする。
逆にメモリサイズを小さくすると、再読み込みが発生して遅くなりファイルキャッシュの意味がない。
もはや手は無いのか?

しかし、私は決して、決して、あきらめない。
やるだけのことはやってみよう。

ちょっと難しい説明になるが我慢して読んで欲しい。
メモリの管理というのは舞台みたいな感じだ。
演目に必要な役者たちが舞台に上がる。これが読み込み作業。
次の演目に切り替える。これがマップ切り替え。
この時出番のない役者は舞台から降り、新しい役者が舞台に上がる。

この入れ替え時間を短くする。
私と観客との勝負だ。

ここで閃いた。
役者がステージから完全に退場してしまうから再登場に時間がかかる。
出番のない役者はステージの隅に隠れていれば良い。そして、隠れる場所が無くなってから退場しても遅くない。
空いている場所に隠れているから音楽などの場所を圧迫しない。

やったぜ俺!
舞台と役者の管理は超複雑だが効果は大きい!
しかし、まだ足りない!
負けるわけにはいかない。いつか「早すぎるので遅くしてください」と言わせてみせる。

次回…何をぼやこうかなぁ

今回のネタ - ガベージコレクション

プログラムが確保したメモリ領域から不要になった領域を自動的に解放する機能をガベージコレクションと呼びます。