🗜️

.vimrcをMinifyしてみた

2022/07/19に公開

example.min.vim

  • example.vim
    " Example
    function s:Hello(name)
      echo 'hello ' . a:name
    endfunction
    
    call s:Hello('minify')
    
  • example.min.vim
    fu s:A(b)
    ec 'hello '.a:b
    endf
    call s:A('minify')
    

はじめに

よくMinifyの対象となっているJavascriptはMinifyしても速度に関してはほとんど意味は無いと言われています(要出典)
そこでふと(VimScriptもおなじなんだろうか…きっと同じなんだろうな)と思ったのですが
ちょっと検索してみてもVimScriptをMinifyしている人が見当たらないので自分で試してみました

MinifyするPluginを作りました

VimScriptをMinifyしている人が見当たらない=VimScriptをMinifyする手段がない
→無いなら作る
というわけで作りましたっています永遠に

https://github.com/utubo/vim-minviml

実際に測定してみた

動作環境

  • vim version 9.0.47
  • RasberryPi 3

対象.vimrc

対象は私が普段使っている.vimrcです

vim9scriptですがまぁ今までのvimscriptでも大差ないだろうなって結果なのでご勘弁を…
1008 lines (932 sloc) 31.5 KB752 lines (752 sloc) 20.7 KB
だいたい3/4にMinifyされています

測定方法

こんな感じでそれぞれ5回測定してみました
(回数が少ないですが結果が結果なのでもう十分かなってなったので)

# Minify前
cp -p .vimrc.src.vim ~/.vimrc
vim --startuptime /tmp/result_src.txt
# Minify後
cp -p .vimrc ~/.vimrc
vim --startuptime /tmp/result_min.txt

結果

左から3つ目の数値が.vimrcのみにかかった時間です

grep vimrc$ /tmp/result_src.txt
268.183  259.320  128.362: sourcing $HOME/.vimrc
266.135  255.991  125.226: sourcing $HOME/.vimrc
261.778  251.766  121.685: sourcing $HOME/.vimrc
269.091  259.068  128.831: sourcing $HOME/.vimrc
245.664  235.524  104.874: sourcing $HOME/.vimrc

grep vimrc$ /tmp/result_min.txt
249.919  239.864  110.796: sourcing $HOME/.vimrc
269.384  259.425  129.096: sourcing $HOME/.vimrc
265.364  255.332  124.067: sourcing $HOME/.vimrc
269.745  259.758  123.824: sourcing $HOME/.vimrc
265.560  254.505  124.469: sourcing $HOME/.vimrc

誤差ですね!
というか平均するとMinifyしたほうが遅いです
予想通りで一安心😇

Minifyする意味

では、効果がないのになぜMinifyするのか?
それは完全に趣味です。
自分にとってはパズルとしては程よい面白さなのです。
例えば

let val1 = "str | nmap dummy dummy" | nmap A " | nmap B " | "this is comment"

let a="str | nmap dummy dummy"|nm A " |nm B "

にMinifyすることを考えると…
オラわくわくすっぞってなってくるでしょう?
zennのシンタックスハイライトも混乱しています
アルデンテだった私のコードもコレを解決する頃にはすっかり伸び切ってしまいました
暇な人は是非チャレンジを⊏'ꣲ'|

GitHubで編集を提案

Discussion