Microsoftが「レゴ式」最適化でWindowsを高速化していた話

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

かつて「昔のソフトは軽かった」と語られることがありますが、その裏には開発者たちの地道な工夫がありました。

Microsoftも1990年代は、わずか12MBのRAMしか存在しない環境でWindowsやOfficeを動かすため、バイナリを徹底的に最適化していたのです。

その中心にあったのは、社内で「Microsoft Lego」と呼ばれていたツールBBT(Basic Block Tool)でした。

元MicrosoftエンジニアのDave Plummer氏によれば、当時のアプリケーションは巨大化する一方で、実際に起動時に必要なコードはごく一部。しかし、その必要な300KBほどのコードが10MBのバイナリ全体に散らばっているため、読み込み時に大量のメモリページを触る必要があり、ディスクアクセスが発生すると大きな遅延につながっていました。

BBTはこの問題を解決するために、実行パスを解析し関連するコードを近くにまとめるという、バイナリの「デフラグ」処理を行い、機能はそのままに、より高速に動作するバイナリ を生成していました。

目次

現代にも通じる最適化の哲学

Dave Plummer氏によれば当時の環境は、起動時に触るページ数を減らす、よく使うコードをまとめてスワップアウトされにくくする、マルチタスク時のレスポンスを改善するといった工夫が、ユーザーの体験に直結していたとのことです。

最適化の哲学は、ハードウェア性能が飛躍的に向上した現在にも通じるものがあり、Plummer氏「問題のスケールが変わっただけで、本質は同じ」と語っています。

バイナリは巨大化し、フレームワークは複雑化し、サービスは分散化していますが、それでも「ホットコードをまとめる」「共通パスを小さく保つ」といった原則は今も有効であり、BOLTやHP Dynamoのような現代的なツールにもその思想が受け継がれているとしています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次