-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
deploy/Generate new documentを速くする #997
Comments
いまちょっとやってます。成果でたらPRします。 |
#999 にて成果を公開。 けれども手元のWindowsではかなり遅くなってしまい
ぶっちゃけ地獄の遅さ。 ボトルネックはほぼほぼ tohtml#Convert2HTML なのは確認した。 推測では 2html.vim の読み込みパースが別プロセスになるので |
FreeBSDでの計測結果
んーWindowsがとりわけ遅いってことかなぁ? 念のため同FreeBSDでの
おおよそ GitHub Actions の machine と同じ速度感。 |
Windowsで遅い原因の1つには 読み込んで整形したものを これで置き換えることで8分、いや恐らく9分は縮められそう。 |
tags-jaにJSON形式のファイルキャッシュを噛ませたところ…
これが 3m になった。 Windows でさらに並列度をあげるとこんな感じ
|
残課題:
|
この誤解は観測データが偏っていたことによるもの。 詳細s:MakeLink は s:GetTags で1回だけ taglist() を実行し、ほぼ定数時間がかかっていた。 一方で tohtml#Convert2HTML は対象となる *.jax のファイルサイズに実行時間が依存する。 パフォーマンスを計測するにあたり過去の経験から 実際はサイズが大きいファイルは多くない。 |
GHA上にて 220秒くらいだったものが130秒くらいに高速化することを確認した。 |
現在deployのGenerate new documentがボトルネックになっている。
例えば このビルド では全体で 3m7s のうち
実に 2m52s (約92%) がGenerate new document に費やされている。
Generate new document は make html を実行しており、
vimdoc-ja-working/Makefile
Lines 12 to 16 in 7ebdd16
これは tools/buildhtml.vim で行われてる。
buildhtml.vim は MakeHtmlAll で全 *.jax を *.html に変換してから、各ファイルにJekyll用のYAMLヘッダーを付けている。
ファイルが多いのに加えてこの部分が順次直列に変化するために時間がかかっていると推測される。
よってこの部分をファイル単位で並列化できれば高速化が期待できる。
解決策案
MakeHmtlAllはファイルを列挙して MakeHtml を呼び出すようになっている。
なのでラッパースクリプトとして、
引数でファイルを1つ受け取ってMakeHtmlを実行しYAMLヘッダーを付与する
スクリプトを作れば、
makeファイルによる呼び出し側から並列度をコントロールできるようになると考えられる。
Vim内で並列化することはほぼ不可能(terminalとか駆使すればできるかもだけど)なので
やらないほうが得策。
残課題
2html.vimのボトルネックの把握 (optional)手を入れるほどではなかった実行時のプログレス表示、検討・改善 (optional)めんどいのでやらないThe text was updated successfully, but these errors were encountered: