歡迎您光臨本站 註冊首頁

Vim 作者創建分支 Vim9 以改進 Vim 的性能

←手機掃碼閱讀     admin @ 2020-01-05 , reply:0

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 中。


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/112562/vim9-improved-vim-fork
Vim 作者創建分支 Vim9 以改進 Vim 的性能已經有174次圍觀

http://coctec.com/news/all/show-post-222100.html