パスワードを忘れた? アカウント作成
16632379 journal
日記

ujimushiの日記: Julia 1.9+PrecompileTools.jlでBlink.jl+Interact.jlの初回起動を高速化する

日記 by ujimushi

仕事関係で数学的な理論式とそのパラメータの関係の可視化を素早く行える方法を探していて,Julia言語のBlink.jl+Interact.jlが良さそうと感じていた。
お手軽にインタラクティブなグラフを表示するデモができて,パラメータを指定する部品が一番揃っている感じだった。

ただ,最初の起動時間が長く,その点をどうするかが課題だった。

最近Juliaのバージョン1.9が出て,その特徴を説明したblogの内容からPrecompileTools.jlモジュールでその対策ができそうだった。

詳細はujimushiのgistに書いたが,モジュール内にPrecompileToolsを取り込んで,速くしたい処理を「@compile_workload」で囲むとprecompile時に囲んだところの処理のネイティブキャッシュを作成してくれる。

...
using PrecompileTools
 
@compile_workload begin
   処理を速くしたい関数の使用例
   ...
end

gistで紹介した例だと約12秒→1秒なので,かなり改善した。
ただしこの例でprecompile時に画面が表示されてしまうのは変なのだが…

また,既存のプロジェクトの起動用ラッパーで高速化も可能。
次のような感じのモジュールを作って StartModule.start()とかすればよい。

module StartModule
using MyModule
using PrecompileTools
 
@compile_workload begin
  MyModule.速くしたい関数(パラメータ)
  ...
end
 
function start()
   MyModule.main()
end
 
end # StartModule

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

読み込み中...