locale-archive
多くのLinuxディストリビューションでは、ファイルが優先される理由と、各ロケールに対してコンパイルされたファイルと比較して、ファイルの利点がどの程度あるのか疑問に思います。
答え1
たとえば、ロケールアーカイブにはシステムマニュアルページが作成された言語が含まれています。このメモリマッピングを使用すると、ディスク読み取り操作を実行するために必要なシステムコールを防止し、ファイルをメモリから読み取ることができるため、より高速なアクセスが可能になります。
メモリマッピングファイル(共有ライブラリと同様に)プロセスの仮想メモリの一部です。トップコマンド、VIRTフィールド。
したがって、メモリにマッピングされたロケールアーカイブ部分は、実際にはメモリに一度だけ存在するglibcを使用する各プロセスの仮想メモリ(デフォルトではすべて)に追加されます。
最後に、各プロセスについて、仮想メモリはプロセスの物理メモリ、つまりメモリマップされたロケールアーカイブ部分の量を過大評価します。
答え2
パフォーマンス。
以下のロケールファイルは、/usr/share/i18n
いくつかの解析が必要なテキストファイルです。これをロードする各プロセスはそれを解析する必要があります。
locale-archive
アプリケーションがメモリ内のデータにアクセスする方法に近いバイナリ形式を使用します。それ自体は解析を必要としません。ファイルを開き、データ構造を読み取るだけです。地図ファイルがメモリに書き込まれます)。
さらに、メモリマップされたファイルはプロセス間で共有されるため、各プロセスがファイルを解析し、メモリ内のデータ構造の独自のコピーを構築する必要があるシナリオと比較してメモリが節約されます。
複数の小さなファイルの代わりに1つの大きなファイルを使用すると、関連するすべてのデータがより速くロードされます。 1つのファイルを開くだけで、ディレクトリ内のファイルを列挙する必要はありません。