Skip to content

deploy/Generate new documentを速くする #997

Open
@koron

Description

@koron

現在deployのGenerate new documentがボトルネックになっている。

例えば このビルド では全体で 3m7s のうち
実に 2m52s (約92%) がGenerate new document に費やされている。

Generate new document は make html を実行しており、

html:
rm -rf target/html
mkdir -p target/html/doc
cp doc/*.jax vim_faq/*.jax target/html/doc
-cd target/html/doc ; vim -eu ../../../tools/buildhtml.vim -c "qall!"

これは tools/buildhtml.vim で行われてる。

buildhtml.vim は MakeHtmlAll で全 *.jax を *.html に変換してから、各ファイルにJekyll用のYAMLヘッダーを付けている。
ファイルが多いのに加えてこの部分が順次直列に変化するために時間がかかっていると推測される。
よってこの部分をファイル単位で並列化できれば高速化が期待できる。

解決策案

MakeHmtlAllはファイルを列挙して MakeHtml を呼び出すようになっている。
なのでラッパースクリプトとして、
引数でファイルを1つ受け取ってMakeHtmlを実行しYAMLヘッダーを付与する
スクリプトを作れば、
makeファイルによる呼び出し側から並列度をコントロールできるようになると考えられる。

Vim内で並列化することはほぼ不可能(terminalとか駆使すればできるかもだけど)なので
やらないほうが得策。

残課題

  • 一部ファイルのファイル名が異なる (mandatory)
  • Makefileの依存関係見直し (mandatory)
  • 2html.vimのボトルネックの把握 (optional) 手を入れるほどではなかった
  • 実行時のプログレス表示、検討・改善 (optional) めんどいのでやらない

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions