概要
メモリが安価になることで、ユーザーは簡単にメモリ増設ができるようになった。メモリ制限の問題を切実な問題として認識しにくい状況にはなりつつあるが、一方で、技術者は携帯電話を含む携帯端末ではメモリが制限され、何十万人ものアクセスのあるDBやWebサーバーではメモリ効率の良いアプリケーション開発の必要性に迫られている。
本書は、メモリ制限の問題を解決するための技法を集めて解説したものである。取り上げられているのは、小規模なマシンで成功したシステム設計を調べ、数多くの成功を導いた技法のエッセンスであり、それらは5つのパターンに分類されている。省メモリプログラミングの入門書として、あるいはすべての技法の総覧、問題解決のためのリファレンス、実装ガイドなどなど、さまざまな用途が考えられる。紹介されている5つのパターンは、Small Architecture(小規模アーキテクチャ)、Secondary Storage(補助記憶装置)、Compression(圧縮)、Small Data Structure(小規模データ構造)、Memory Allocation(メモリ割当)、となっている。それぞれの技法は、パターン名、問題の陳述、コンテキストの説明、解法、結果など、決められたフォーマットで記述されおり、読みやすい構成となっている。
メモリ制限の問題に直面している技術者はもちろん、普段この問題について意識していない技術者にとっても有益な内容である。
感想
学生時代は「時間と空間のトレードオフ」という話を良く聞いたが、最近ではCPU、メモリ間の転送がボトルネックになることが多いので省メモリ化することで速度も改善することが多い。本書は目的に応じて省メモリ化のアプローチ、実装、メリット/デメリットを体系的にまとめていて参考になる。ただ、冒頭の導入というか前振りの文章が欧米の技術系にありがちな文体でチープなのと訳が単調なのがちょっとマイナス。