Vim 作者创建分支 Vim9 以改进 Vim 的性能
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 更快。
let sum = 0
for i in range(1, 2999999)
let sum += i
endfor
| how | time in sec |
|---|---|
| Vim old | 5.018541 |
| Python | 0.369598 |
| Lua | 0.078817 |
| Vim new | 0.073595 |
在更相关的代码片段中,Vim9 可以在 0.19 秒内运行脚本,而 Vim 的时间是 0.85 秒。
let totallen = 0
for i in range(1, 100000)
call setline(i, ' ' .. getline(i))
let totallen += len(getline(i))
endfor
| how | time in sec |
|---|---|
| Vim old | 0.853752 |
| Python | 0.304584 |
| Lua | 0.286573 |
| Vim new | 0.190276 |
关于 Vim9 的具体实现思路和细节请查看其 GitHub 仓库,这些工作经过验证有效后会被合并到 Vim 中。
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
每日一博 | Java 8 Stream 的终极技巧——Collectors 操作
1. 前言 昨天在 Collection移除元素操作 相关的文章中提到了 Collectors 。相信很多同学对这个比较感兴趣,那我们今天就来研究一下 Collectors 。 2. Collectors 的作用 Collectors 是 Java 8 加入的操作类,位于 java.util.stream 包下。它会根据不同的策略将元素收集归纳起来,比如最简单常用的是将元素装入Map、Set、List 等可变容器中。特别对于 Java 8 Stream Api 来说非常有用。它提供了collect() 方法来对 Stream 流进行终结操作派生出基于各种策略的结果集。我们就借助于 Stream 来熟悉一下 Collectors 吧。我们依然用昨天的例子: List<String> servers = new ArrayList<>(); servers.add("Felordcn"); servers.add("Tomcat"); servers.add("Jetty"); servers.add("Undertow"); servers.add("Resin"...
-
下一篇
美国新规限制人工智能软件出口,针对中国等国家,周一生效
据路透社等海外媒体报道,特朗普政府在周五(1 月 3 日)采取了措施来限制人工智能软件的出口,新规将于 1 月 6 日生效。此举主要针对中国等国家, 报道写到,「根据将于周一生效的新规定,出口某些地理空间图像软件的美国公司必须申请许可,才能将上述软件发送到海外(加拿大除外)。」 而限制这类人工智能软件的出口,是美国防止敏感技术被对手国家掌握的手段之一。 根据文件要求,应用于智能化传感器、无人机、卫星和其他自动化设备的目标识别软件(无论民用或军用)都在限制范围之内。 这一法令是由美国商务部下属的工业和安全局(BIS)发布的。该机构旨在通过确保实施有效的出口管制及条约合规体系,以保障美国的国家安全、促进外交政策和经济目标的实施,并保障美国战略技术的「持续领导地位」。 此前引发广泛争议,影响华为、中兴等国内科技公司的进出口管制条例「实体清单」也是由 BIS 全权负责的。2019 年 5 月,美国商务部将华为等中国公司和机构加入了「实体清单」,随后又在 10 月将海康、大华、旷视等公司被列入清单。 美国智库国际战略研究中心(CSIS)副总裁、资深网络安全研究员 James Lewis 表示,这...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8编译安装MySQL8.0.19
- Docker容器配置,解决镜像无法拉取问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16

微信收款码
支付宝收款码