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

はじめまして

静岡の極東の浜辺で何かをやっている人間です、基本的に季節を問わずBBQとオフロードをバイクで走るのがが大好きです、暇があれば何かを焼いているか走っています。どこかの浜で焼いている姿をみたら、gentooの話もで飲みながらしましょう...

Posted

Amazon

tags

日本酒池 広井酒店 やがら やっぱた 刺身 丸干し 東京マラソン fpm php82 servant thread spawn Rust Oracle Linux 8 microcode firmware linux openzfs zfs gitea 麒麟 真野鶴 金鶴 日本酒 docker oracle pod podman cli virtualbox VirtualBox epub mobi calibre mask lens ワンライナー php redmine Linux Oracle Map OMap omap map BBQ カテゴリ管理 カテゴリ timestamp date oracle database string 麦焼酎 ダービー process 磨き蒸留 広井酒店、日本酒 芋焼酎 焼酎 ゆるキャン 広井酒店、日本酒池 spring framework java persistent spring session session spring hdbc-odbc persistent-odbc odbc day utctime スィート レマンの森 elm初期化 elm バイク xlr80 esqueleto database xl2tpd strongswan vpn l2tp ipsec 正月 ゲーム grub nginx systemctl portage 豚骨 圧力鍋 yesod-auth-hashdb yesod-auth yesod