zplugちょっとだけ高速化

# TL;DR
パッケージの追加を毎回するのではなく、必要な時だけするようにすると少し早くなる。

```zsh
source $ZPLUG_HOME/init.zsh

cache_dir=$HOME/.zplug/cache

if [ -d $cache_dir ]; then
  plugins=$HOME/.zsh.d/zplug_plugin.zsh
  cache=$cache_dir/interface
  plugin_date=$(date -r $plugins +%s)
  cache_date=$(date -r $cache +%s)
  # echo $package_date $cache_date
  if [ ! -d $cache_dir -o $plugin_date -gt $cache_date ]; then
    . $HOME/.zsh.d/zplug_plugin.zsh
  fi
else
  . $HOME/.zsh.d/zplug_plugin.zsh
fi

zplug load
```

# 背景
[以前脱zplugをした](http://qiita.com/vintersnow/items/c29086790222608b28cf)が新しいパソコンに移行した時マニュアル管理が面倒になったのでzplugに復帰した（笑）

新しいパソコンでロード時間が伸びても体感ではそこまで遅く感じないというのもある。（zshrcのロード以前のラグが多少あるみたい）

でもやっぱり少し遅いのでなんとかならないかと調べてみたところ、zplugは一度実行するとcacheを作るので毎回プラグインを追加する必要がないということに気づいた。
なので、pluginを追加する処理を別のファイルにしてcacheと比べて新しい場合だけロードするようにした。

具体的にはつぎのようにしてプラグインの追加処理を`zplug_plugin.zsh`に分離して、cacheの更新日時と比べて新しい場合はロードしている。

```zsh
source $ZPLUG_HOME/init.zsh

cache_dir=$HOME/.zplug/cache

if [ -d $cache_dir ]; then
  plugins=$HOME/.zsh.d/zplug_plugin.zsh
  cache=$cache_dir/interface
  plugin_date=$(date -r $plugins +%s)
  cache_date=$(date -r $cache +%s)
  # echo $package_date $cache_date
  if [ ! -d $cache_dir -o $plugin_date -gt $cache_date ]; then
    . $HOME/.zsh.d/zplug_plugin.zsh
  fi
else
  . $HOME/.zsh.d/zplug_plugin.zsh
fi

zplug load
```

`zplug_plugin.zsh`は以下のような感じ

```zsh
zplug "zsh-users/zsh-completions"
zplug "zsh-users/zsh-autosuggestions"
zplug "zsh-users/zsh-syntax-highlighting", defer:2

zplug "mafredri/zsh-async"
zplug "sindresorhus/pure"

zplug "b4b4r07/enhancd", use:"init.sh"
# zplug "mollifier/anyframe"
zplug "vintersnow/anyframe"
loadlib $DOTFILES/.zsh.d/any_frame.zsh

zplug "marzocchi/zsh-notify", if:"has 'terminal-notifier' || has 'notify-send'"
zstyle ':notify:*' command-complete-timeout 10

zplug "Tarrasch/zsh-colors"

zplug "lukechilds/zsh-nvm"
```

# 結果

### 毎回`zplug_plugin.zsh`を読んだ場合

```
❯  for i in $(seq 1 10); do time zsh -i -c exit; done
zsh -i -c exit  0.13s user 0.06s system 71% cpu 0.265 total
zsh -i -c exit  0.12s user 0.08s system 72% cpu 0.267 total
zsh -i -c exit  0.12s user 0.07s system 71% cpu 0.266 total
zsh -i -c exit  0.12s user 0.07s system 71% cpu 0.267 total
zsh -i -c exit  0.11s user 0.08s system 71% cpu 0.266 total
zsh -i -c exit  0.11s user 0.08s system 71% cpu 0.270 total
zsh -i -c exit  0.13s user 0.06s system 72% cpu 0.268 total
zsh -i -c exit  0.10s user 0.10s system 72% cpu 0.268 total
zsh -i -c exit  0.13s user 0.06s system 72% cpu 0.263 total
zsh -i -c exit  0.13s user 0.06s system 71% cpu 0.270 total
```

### 改良版

```
❯  for i in $(seq 1 10); do time zsh -i -c exit; done
zsh -i -c exit  0.43s user 0.22s system 87% cpu 0.743 total
zsh -i -c exit  0.11s user 0.05s system 77% cpu 0.212 total
zsh -i -c exit  0.12s user 0.05s system 78% cpu 0.213 total
zsh -i -c exit  0.12s user 0.04s system 78% cpu 0.208 total
zsh -i -c exit  0.12s user 0.04s system 78% cpu 0.209 total
zsh -i -c exit  0.12s user 0.05s system 78% cpu 0.216 total
zsh -i -c exit  0.11s user 0.05s system 79% cpu 0.210 total
zsh -i -c exit  0.11s user 0.05s system 77% cpu 0.211 total
zsh -i -c exit  0.12s user 0.05s system 78% cpu 0.213 total
zsh -i -c exit  0.13s user 0.03s system 78% cpu 0.209 total

```

初回だけやたら時間がかかっているが、それ以外では50msほど早くなった。
複雑な処理は行っていないし、特に副作用はないと思うのでまあしばらくこれで使ってみたいと思う。