PATH 应该是一个系统调用?
2025-04-25
Emacs 和 bash 在启动时查找配置文件时,需要遍历 PATH 环境变量中的每个目录,逐一检查目标文件是否存在,效率低下。这篇文章探讨了这种低效的查找机制,并以 strace 工具跟踪 Emacs 和 bash 的系统调用,展示了大量的 fstatat 调用。作者认为,这种查找方式应该由操作系统或文件系统直接提供更优化的解决方案,例如类似于数据库查询的方式,直接返回符合条件的文件,而不是逐一尝试。作者还提到 Python 的实现相对更高效,但也存在不足。最终,作者提出了一种改进方案:将所有可能的文件名和目录列表直接提供给操作系统,以减少系统调用次数和网络请求次数。
阅读更多
开发