Perlテックブログ

ITエンジニアの成長意欲を刺激する技術考察、モジュール開発の日記。Perlイベントや国内や海外のPerlの記事の紹介。

SPVMで試験時のgccのコンパイルが遅いのでコンパイルキャッシュを実装中

SPVMJITの実装をしているのだけれど、サブルーチンひとつひとつをJITするという実装までたどり着いた。

実際に利用するときは、実行時に必要なサブルーチンだけコンパイルするので、よさそうなのだけれど、試験のときは、JITされた関数を試験しないといけないので、すべての関数をJITしないといけない。

でもそうなると、gccコンパイルが関数の分だけ実行されてしまう。コンパイル速度を図るとひとつのgccを使ったコンパイルで、0.05秒。試験の関数は現在600個ほどあるので、あわせて30秒かかってしまう。

これを試験時に毎回実行するのは辛い。だから、試験時に、コンパイルキャッシュを実装して、新しく更新があったモジュールに含まれる関数だけをJITするような仕組みを実装中。

問題を解決するために、実装をしていると、また次の課題がでてくる、それをまたうまく解決できるようにする。