Vim 編輯器的創建者 Bram Moolenaar 最初開發了 Vim 以作為 Vi 編輯器的「增強版」,而現在,他希望通過一個名為 Vim9 的實驗性分支對 Vim 本身進行改進。
Bram Moolenaar 表示,Vim9 是 Vim 的一個實驗性分支,旨在探索使 Vim 腳本更好且更快執行的方式。這也是除「彈出窗口(Popup Windows)」和「文本屬性(Text Properties)」之外,開發者呼聲最大的功能需求。
為了能更快執行 Vim 腳本,Bram 思考了很多並得出如下結論:當前調用和執行函數的方式(帶有用於參數和局部變數的字典)永遠不會很快。如果能夠使速度快兩倍,那麼 Vim 的性能將會有明顯的改進。畢竟調用和執行每一行函數的開銷十分高。
Bram 認為只有通過一種與舊方法類似但屬性不一樣的新方法來定義函數才能使速度變快:
對於上面的思路,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 中。
[admin
]