Eric's Blog 时光荏苒,岁月如梭

Vim9Script 与 Lua 的速度比较

2024-08-10
Eric Wong
   

前面写过一篇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-4s1.23s 的测试结果,还是相差太多。


延生阅读

分享到:

评论

目前只支持使用邮件参与评论。