Vim性能测试工具
本文内容主要来自于翻译”Vimberlin.de”上的一篇Profiling Vim。
并且其中附加本人的一些测试说明等。
主要提供了一些关于Vim的Built-in
的性能测试工具。
如何查看Vim的工作日志
这里我们需要利用-V
来开启Vim的verbose
模式。
这样会将vim的运行时加载的插件或者执行的脚本命令详细的显示出来并记录在messages
里边。
记录的详细程度跟verbose level
的值有关,默认值是10。
我们可以通过命令:messages
来显示该记录内容。
关于 Verbose Level
如下命令
是指将vim的运行记录以20等级的verbose level
存放到/tmp/vim.log
中。
Ps:需要注意的是,参数-V20
与log文件之间不能有空格,有空格的话就成了vim打开两个文件了。
若制定的log存放位置,运行的时候就不再显示具体内容,而是都写入到log文件中。
否则的话,所有信息都将显示在屏幕中。
其中Verbose Level
有如下几个类别:
- =0: 当level设置为0的话只是简单的给出Vim正在做什么(Vim will give messages about what it is doing);
- >=1: 这里会给出
viminfo
文件读写的信息(When the viminfo file is read or written); - >=2: 这里会给出文件被
:source
的信息(When a file is:source
ed); - >=5: 显示了所有搜到的
tags
文件与include
的文件(Every searched tags file and include file); - >=8: 显示了一组要执行的
autocommand
的文件(Files for which a group of autocommands is executed); - >=9: 显示所有执行的
autocommand
(Every executed autocommadns); - >=12: 显示所有执行的
function
(Every executed function); - >=13: 显示异常的抛出,捕获,结束或者消除(When an exceptions is thrown, caught, finished or discarded);
- >=14: 显示所有在
:finally
期间的所有(Anything pending in a:finally
clause); - >=15: 显示所有执行的
Ex command
(Every executed Ex commands, truncated at 200 characters);
需要注意的是,这些记录并不像真正的日志那样带有timestamps
。
在runtime修改verbose信息
如果想在vim运行时修改verbose
的存放位置或者修改verbose level
的话,可以用如下命令
vim 启动时间
如果想查看vim启动时间的详细内容,可以这样
该参数与-V
参数不同,参数后边文件位置与参数直接必须要有空格。
另外存放log的文件位置不能省略,否则会直接把你要打开的filename
当做log文件来记录信息。
不过该命令只支持7.2.269及以后的版本
vim 的profile 模式
XXX: profile模式需要vim在编译的时候带+profile
的标志。
Ps: 如果不确定是否含有+profile
标志位的话可以在vim里用:version
来查看。
这样当vim关闭的时候会生成vim运行时详细的性能分析报告。 参见http://stackoverflow.com/questions/12213597/how-to-see-which-plugins-are-making-vim-slow, 我们可以在这几条命令之后执行使vim运行缓慢的操作,从而可以查找到问题的元凶。
我们也可以在vim启动的时候开启profile
模式
:help profile
里边会提醒到:
Profiling
在多处理器系统中有可能出现weird
结果,比如说在睡眠模式的时候或者处理器降频省电时候(Profiling may give weird results on multi-processor systems, when sleep mode kicks in or the processor frequency is reduced to save power)。- 当函数是递归函数时,其
self
的时间是错误的(The “self” time is wrong when a function is used recursively)。
profile on syntax
XXX: 需要vim在编译的时候带+profile
的标志。
用来报告vim在匹配当前文件语法的耗时。 该命令支持7.4及以后版本。
insert timestamps
参见http://stackoverflow.com/questions/1687799/profiling-vim-startup-time
-> only working at the beginning tip is very old (2009) - maybe vim changed since then
fifo
-> work around: use fifo -> but vim closes the file -> use while loop
11 Feb 2016
Post by: MetaCoder