这开始于我看到我的emacs man-mode
慢得可疑,我发现每当我键入M-x man RET [number]
时,emacs都会在命令行上调用man -k ^
和man -k^[number]
。时间和wc输出有点荒谬:
% time man -k ^ | wc
makewhatis: /Library/TeX/texbin/man: Not a directory
12434 101864 923700
man -k ^ 0.67s user 1.40s system 103% cpu 1.991 total
wc 0.01s user 0.02s system 1% cpu 1.990 total
为什么总时间接近2秒,而操作似乎花费了约0。03秒?我相信这可能是导致严重减速的原因,我想在我的系统中找到这个膨胀的底部。MacOS Ventura。
1条答案
按热度按时间ibrsph3r1#
你需要明白你在看什么。
man -k ^3
将在整个man
数据库中搜索每个摘要以3
开头的手册页(没有)。man -k ^
将简单地输出所有摘要。这是一个开销适中的操作,特别是当man
需要在后台重建索引时。然而,处理的主要部分是在阅读和可能写入索引时等待磁盘,并缓冲它写入的输出,因此最终不会消耗大量CPU。wc
的time
输出显然只考虑了处理man
输出所花费的时间,这是微不足道的。显然您使用的是Zsh,它在
time
输出中不包含“真实的”时间。在我的系统上,重复运行man -k ^
后,整个过程大约需要10秒,但除此之外,它只消耗了大约5秒的CPU时间(0.8s用户+4s系统)。最后,我们必须问为什么在
M-x man
之后输入一个数字,以及您希望最终完成什么。如果您确实需要所有已安装手册页的列表,或者特定部分中的所有手册页的列表,则需要一些时间。(On我的系统,
M-x man <RET> 3 <RET>
只输出一些内部垃圾,看起来像man
内部shell脚本,重新格式化。)