この記事は、Zennにも投稿しています。
方法1
最初は下の方法2を使用していましたが、profile.nvimという素晴らしいプラグインが出ていたので今はこれを使用するのがおすすめです。
使い方はプラグインのREADMEに書いてある通りなのですがそれだけでもなんなので自分の使用例を書いておきます。
nvim/lua/user/profile.lua at c6dff3f61c62602c6e3cc98cf691d965b24e72c3 · nazo6/nvim
Contribute to nazo6/nvim development by creating an account on GitHub.
github.com
こちらが自分の
ポイントとしては、パッケージマネージャ(自分の場合は
パッケージマネージャ自体のパフォーマンスを計測したい場合には自身でこのプラグインを使用しなければならないということです。
この設定では
profile.nvim
の設定です。ポイントとしては、パッケージマネージャ(自分の場合は
lazy.nvim
)がこのプラグインを読み込む前のコードやパッケージマネージャ自体のパフォーマンスを計測したい場合には自身でこのプラグインを使用しなければならないということです。
この設定では
vim.fn.stdpath "config" .. "/profile.nvim"
をruntimepath
に追加して、lazyのsetup前からプラグインを使用できるようにしています。これで
のようにneovimを起動し、
<F1>
キーを押すことでプロファイルのデータを保存できます。データの見方
データを見るには、https://ui.perfetto.devを使用します。試しに自分の設定で取ったプロファイルが以下のようになります。

これでどのコードに時間がかかっているのか一目瞭然です。neovimの起動時間を詰めたいときなどに非常に有用な他、

これでどのコードに時間がかかっているのか一目瞭然です。neovimの起動時間を詰めたいときなどに非常に有用な他、
--startuptime
とは違い好きなタイミングでプロファイルを行えるため、プラグイン作成にも使えるんじゃないかなと思います。方法2
こっちは方法1を発見する前の内容です。現在でも使えますが方法1のほうが正確な気がします。
plenary.nvim がインストールしてあれば使いかたは簡単で、計測したい範囲を
のように囲むだけです。
これで init.lua であれば
~/.config/nvim
以下に profile.log ができます。グラフにする
が、このログは超絶見づらいので図にしたいです。そこでinfernoという
Rust 製ツールを使います。README
にごちゃごちゃ書いてますが今回はログをグラフに変換したいだけなので cargo install
するだけです。もちろん Rust
ツールチェーンがインストールされている必要があります。
Rust 製ツールを使います。README
にごちゃごちゃ書いてますが今回はログをグラフに変換したいだけなので cargo install
するだけです。もちろん Rust
ツールチェーンがインストールされている必要があります。
そしてさっきのプロファイルの開始の行を
に変えます。 そして
を実行すると svg で図が出力されます。
試しに自分の init.lua で試してみたのがこちらです。

どのプラグインに時間がかかっているのかが一目瞭然です。設定だけではなくプラグイン開発にも役立ちそうですね。

どのプラグインに時間がかかっているのかが一目瞭然です。設定だけではなくプラグイン開発にも役立ちそうですね。
jit.vmdef not found
とかいうエラーがでた
LuaJIT をインストールします。
そして環境変数
これで動くはずです。
LUA_PATH
に今インストールしたLuaJITのパス/src
を追加します。これで動くはずです。