それはロードの高速化です。
ロードとは何かというのは難しい問題です。
2次記憶から1時記憶に読み込む動作を指すのですが、歴史的経緯からリンクと渾然一体となっています。
本当にメモリから読み込むだけなら、ストレージの読み出し速度に収斂するはずです。
ところが歴史を飾るOSはさまざまの制限から凝ったリンク機構でややこしいことをしていたようです。
あるときは少ない物理メモリをうまく使いまわすために、あるときはシステムの起動時間のカタログスペックを向上させるために。
いまどきの組み込みは実行バイナリが数十MBを越えるのも普通で、シンボル数は数える気がおきないほどです。ローダリンカは当然のことながら、すべてのシンボルをリンクするわけですな。
ストレージとバス速度は速くなっても所詮はマッチ箱のCPUです。リンクという単純な表引き処理であっても、数万数十万回繰り返すにはそれなりの時間がかかってしまうわけですな。
prelinkはそこを改善するわけで、見た目はバイナリのロード時間を短縮します。
ロードされるバイナリがシステムのメインプログラムなら、それはシステムの起動所要時間を左右します。
prelinkで高速化する前にやるべきことがあるんじゃないか
http://d.hatena.ne.jp/syasuda/20080202/1201914587
コメント