|
|
51CTO旗下网站
|
|
移动端

把Vi改造成Vim的作者,现在又让Vim快了70倍

Vim 编辑器的创建者 Bram Moolenaar 最初开发了 Vim 以作为 Vi 编辑器的“增强版”,而现在,他希望通过一个名为 Vim9 的实验性分支对 Vim 本身进行改进。

作者:局长来源:开源中国|2020-01-08 15:17

把Vi改造成Vim的作者,现在又让Vim快了70倍

Vim 编辑器的创建者 Bram Moolenaar 最初开发了 Vim 以作为 Vi 编辑器的“增强版”,而现在,他希望通过一个名为 Vim9 的实验性分支对 Vim 本身进行改进。

Bram Moolenaar 表示,Vim9 是 Vim 的一个实验性分支,旨在探索使 Vim 脚本更好且更快执行的方式。这也是除“弹出窗口(Popup Windows)”和“文本属性(Text Properties)”之外,开发者呼声最大的功能需求。

为了能更快执行 Vim 脚本,Bram 思考了很多并得出如下结论:当前调用和执行函数的方式(带有用于参数和局部变量的字典)永远不会很快。

如果能够使速度快两倍,那么 Vim 的性能将会有明显的改进。毕竟调用和执行每一行函数的开销十分高。

Bram 认为只有通过一种与旧方法类似但属性不一样的新方法来定义函数才能使速度变快:

  • 参数只能通过名称(name)使用,而不能通过 a: dictionary 或 a:000 列表的形式使用
  • 局部变量在 l: dictionary 中不可用
  • 解决一些影响速度的问题,例如异常处理细节

对于上面的思路,Bram 提供了概念验证代码。到目前为止,对于一个简单的运行循环的 Vim 脚本,Vim 需要五秒钟的时间,Vim9 则可以在 0.07 秒内运行它,与 Lua 脚本的时间相同,并且比 Python 更快。

  1. let sum = 0 
  2. for i in range(1, 2999999) 
  3. let sum += i 
  4. endfor 

在更相关的代码片段中,Vim9 可以在 0.19 秒内运行脚本,而 Vim 的时间是 0.85 秒。

  1. let totallen = 0 
  2.  for i in range(1, 100000) 
  3.    call setline(i, '    ' .. getline(i)) 
  4.    let totallen += len(getline(i)) 
  5.  endfor 

关于 Vim9 的具体实现思路和细节请查看其 GitHub 仓库,这些工作经过验证有效后会被合并到 Vim 中。

【编辑推荐】

  1. 华为openEuler操作系统正式开源:上千个代码仓库
  2. 从TCP/IP协议谈Linux内核参数优化
  3. 轻松使用Linux Equinox桌面环境
  4. Linux useradd 命令介绍
  5. Linux inode的正确理解
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月获赞

订阅专栏+更多

Python应用场景实战手册

Python应用场景实战手册

Python应用场景实战手册
共3章 | KaliArch

10人订阅学习

一步到位玩儿透Ansible

一步到位玩儿透Ansible

Ansible
共17章 | 骏马金龙1

101人订阅学习

云架构师修炼手册

云架构师修炼手册

云架构师的必备技能
共3章 | Allen在路上

30人订阅学习

读 书 +更多

程序员密码学

《程序员密码学》涉及密码学的各个研究方向,分组密码、散列函数、公钥密码以及相关的攻击,同时也讲解了密码学算法实现上常用的ASN.编码、...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微