$30 off During Our Annual Pro Sale. View Details »

gocloc

 gocloc

Hideo Hattori

January 18, 2019
Tweet

More Decks by Hideo Hattori

Other Decks in Technology

Transcript

  1. gocloc Umeda.go 2019 Winter 2019.01.18

  2. whoami Hideo Hattori (hhatto) 関西圏でソフトウェアエンジニアをしています Rust, Python, Go, C などが好きです

  3. 今日お話しすること gocloc 作ってみました 得られた知見

  4. gocloc とは?

  5. gocloc ソースコードの行数を数えるツール Perl 実装のcloc がベース

  6. モチベーション cloc が遅いので速いツールが欲しかった Rust でも同じような実装があったのでGo でもどれ くらい高速になるか試したかった

  7. 実行イメージ $ gocloc . ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ Language files blank comment code

    ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ Go 13 164 42 1369 Markdown 1 20 0 149 Makefile 1 5 0 14 TOML 1 2 0 9 YAML 1 2 0 8 ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ TOTAL 17 193 42 1549 ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  8. 主な機能 言語毎のファイル数/ 空行数/ コメント行数/ コード 行数の表示 ファイル毎のファイル数/ 空行数/ コメント行数/ コ

    ード行数の表示( ­­by­file オプション) 出力結果が多様なフォーマットに対応
  9. 得られた知見

  10. 得られた知見 goroutine 使わなくてもGo で実装するだけで動作 が軽量なツールが実装できる シングルバイナリでツールを提供できて配布が楽 ファイルの言語判定にはsrc-d/enry を使うとより高 速になる generaltso/linguist

    がもともと存在していた が、src-d/enry に切り替えたところ高速に動作 した
  11. 得られた知見 boyter/scc というGo の別実装が登場 ファイルの言語判定が自前なので速い goroutine を使っていてgocloc よりさらに高速 gocloc もgoroutine

    使えばさらに高速化できる かもしれない ATS という言語で実装されているPolyglot というツ ールが最速
  12. 合わせて読むと良いかもしれないリンク集 gocloc - fast cloc implementation | hexacosa.net 実装初期にまとめたgocloc 誕生の経緯など

    Sloc Cloc and Code Revisited - Optimizing an already fast Go application | Ben E. C. Boyter Yet Another なGo で実装されたcloc クローン。 gocloc より速い!! Polyglot Is the Fastest Code-counting Tool Available Polyglot という最速のcloc クローン。ATS という 言語で実装されている
  13. Thank you!!