コンパイラノート表示

最近のバージョンのSBCL*1では、処理速度を最優先にする宣言を行って関数をコンパイルした場合でも、デフォルトではコンパイラノート*2が表示されないことがある*3


そのため、最適化を確実に行いたい場合は、コンパイラノートを出力するように明示的に宣言する必要がある。

(declare (optimize (debug 0) (safety 0) (speed 3) (compilation-speed 0))
         ;; ↓これが必要
         (sb-ext:unmuffle-conditions sb-ext:compiler-note)) 

また、これはどうやらdeclaimで宣言した場合は無効で、declareを使う必要があるようだ。

*1:今回試したのは1.0.28

*2:最適化を行うために修正が必要な箇所などを教えてくれる

*3:多分compile-file関数でコンパイルを行う場合は、デフォルトで表示され、REPL上でコンパイル(関数定義)する場合は表示されない