template-haskell関連のビルドに時間がかかる
普通にコーディングした後ビルドしてみたら、フォームを扱っているモジュールが異様にビルド時間が長いことに気づき、調べてはみたもののいまいち納得行っていません。
ただ、わかったことは
- THを使っているモジュールの時間が長くなる
- ghc-optionsの最適化オプションを -O0 にするとコンパイル時間が異様に早い(-O2に比べて早すぎる)
- ghc-optionsの最適化オプションを -O1 にしても-O2と大差ない
- 出来上がったBinaryが、 -O2 の方が大きい
こんなところなんでんですが、なんか最適化するとメリットあるのかなと感じています。
THもかなり利用されているとおもうので、この辺を高速化するためになにか秘策みたいなものがあるのかなと勝手に想像しています。 試しにこれで出力してみましたが、とにかく 「最適化しまくってるんだな」 がわかって程度です。
ghc-options:
- -O2 -v
実行結果
参考程度になりませんが、私の環境での実行結果です
オプション O2
Registering library for Houbou-0.9.9..
real 22m8.297s
user 21m51.241s sys 0m18.220s
オプション O1
Registering library for Houbou-0.9.9..
real 0m33.069s
user 0m28.641s sys 0m2.001s
何でしょうかこの差は、20分も待っていられないのでとりあえず-O0でやっていこうと思います。
ちなみに実行環境は
- OS
- Linux 5.4.72-gentoo #1 SMP PREEMPT
- CPU
- x86_64 Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz GenuineIntel GNU/Linux
- ghc
- The Glorious Glasgow Haskell Compilation System, version 8.8.4
- LTS
- LTS-16.12
Posted on 2020-11-08 20:32:56