与分布在目录中的语言环境文件相比,语言环境存档有什么优势?

与分布在目录中的语言环境文件相比,语言环境存档有什么优势?

我很好奇为什么locale-archive文件在许多 Linux 发行版中是首选,以及它相对于每个语言环境的编译文件的优势是什么以及在多大程度上。

答案1

例如,区域设置存档文件包含系统手册页所使用的语言。这种内存映射可以在内存中读取文件,避免用于执行磁盘读取操作的系统调用,因此可以实现更快的访问速度。

内存映射文件(如共享库)是进程虚拟内存的一部分,例如顶部命令,VIRT 字段。

因此,映射到内存的语言环境存档文件的部分加起来就是每个使用 glibc 的进程的虚拟内存(基本上是所有内容),而这实际上只在内存中存在一次。

最后,对于每个进程,虚拟内存高估了进程的实际内存,即内存映射的区域设置归档文件部分的数量。

答案2

表现。

下面的语言环境文件/usr/share/i18n是需要一些解析的文本文件。每个加载它们的进程都必须进行解析。

locale-archive采用二进制格式,更接近应用程序访问内存中数据的方式。本质上不需要解析:只需打开文件并读取数据结构(或者更确切地说,事实上,地图文件写入内存)。

此外,内存映射文件可以在进程之间共享,因此与每个进程必须解析文件并构建自己的内存数据结构副本的方案相比,这可以节省内存。

拥有一个大文件而不是许多小文件可以更快地加载所有相关数据:只需打开一个文件,无需枚举目录中的文件等。

相关内容