2018年12月16日

nim言語のコンパイル時間を3倍速くする方法 2018

nim言語のコンパイル時間を3倍速くする方法 2018
はじまり
お気楽極楽でスクリプト風味プログラミング言語、nim言語。

(1) ネイティブコードコンパイラ(正確にはトランスレータ)
(2) Hello Worldのバイナリサイズは、たったの35Kbyte(Windows版)
(3) 実行速度はC言語も真っ青になる場合もある。くらい高速。
    (そうでない場合も当然ある :-)

nim言語のコンパイラは正確には、C言語に変換するトランスレータである。
生成されたC言語のコンパイルには標準でgccが使われる。
(LLVMやMSVC(VCC)等に変更することも可能)

初回のコンパイルではフルコンパイルがかかるので結構遅い感じだ。
2回目以降はインクリメンタルコンパイルになるので、こそまで遅い感じではないが、
スクリプト言語に比べれば遅さは否めないのだった。

コンパイル速度を3倍速くする方法
結論から言うと、gccより9倍高速にコンパイル可能な「tcc」を使います。
https://bellard.org/tcc/
ダウンロード
http://download.savannah.gnu.org/releases/tinycc/
(1) 32bit(Windows)
        http://download.savannah.gnu.org/releases/tinycc/tcc-0.9.27-win32-bin.zip
    64bit(Windows)
        http://download.savannah.gnu.org/releases/tinycc/tcc-0.9.27-win64-bin.zip
    ダウンロード後、解凍して「tcc」フォルダを「c:\tcc」等に移動する。
    (1b) Linux(Ubuntu/Debian系)
        $ sudo apt install tcc
        で完了。簡単。Linuxの場合、もともとWindowsほどコンパイルは遅くないかも。
(2) (Windowsのみ)環境変数に「c:\tcc」を加える。
(3) nimのソースコードがあるフォルダでMS-DOSコマンドプロンプトを開いて、
    「--cc:tcc」を加えるだけ。
    gccコンパイルに戻したいときは「--cc:tcc」をカットするだけ。
自分の場合は以下で使用中。
    
nim c -d:release --opt:size --passL:-s --cc:tcc ファイル名.nim
ただし、tccの場合、最適化オプションは一切無効になるので「--opt:size」は無視される。 Win32API・GUIライブラリ tccコンパイラで「winim」「wNim」などのGUIライブラリも普通にコンパイルできた。 とういうか、gccとの互換性は問題なさそう。 デメリット 実行速度が3倍遅くなります。 tccでちゃちゃっと作って、そろそろ完成に近づいたらgccに戻せばいいでしょう。


posted by Copyright (C) avrin All Rights Reserved. at 09:59| Comment(0) | nim言語 | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。