前面写过一篇Lua 与 VimL 速度比较的文章, 里面对 Lua 与 VimL 脚本计算速度做了比较。随着 Vim 的更新并且推出了新的脚本语言 Vim9Script, 也想看一下这个新的脚本语言写法及执行效率到底如何。
任然参考上一篇文章中的比较方式,Vim9Script 实现的函数如下:
vim9script
def V9Fibo(N: string)
var start = reltime()
var t = str2nr(N)
var b = 0
while t > 0
t = t - 1
var a = 1
b = 1
var c = 73
while c > 0
c = c - 1
var tmp = a + b
a = b
b = tmp
endwhile
endwhile
var sec = reltimefloat(reltime(start))
echo b
echom printf('Vim9Fibo(%s): %.6g sec', N, sec)
enddef
defcompile
command! -nargs=+ TestV9Func V9Fibo(<f-args>)
新建一个 vim 文件,写入上述内容。使用 :so %
载入脚本,分别执行如下测试命令:
:TestV9Func 1000
:TestV9Func 10000000
本地测试结果:
Vim9Fibo(1000): 0.007455 sec
Vim9Fibo(10000000): 69.937198 sec
在前一篇文章中比较的是 Vim Script 和 Lua 的速度,其结果是:
Fibo(1000): 0.410364 sec
Fibo(10000000): 1470.280914 sec
LuaFibo(1000): 9.052000e-4 sec
LuaFibo(10000000): 1.235385 sec
测试结果不难看出,Vim9Script 相较于老版本的 Vim script 确实有很大的速度提升。
计算参数1000时,从 0.41s
提升到了 0.0074s
;
计算参数一千万时,从 1470s
提升到了 69s
。
但是相较于 Lua 的 9.0e-4s
和 1.23s
的测试结果,还是相差太多。