ページ

2013-12-29

git-count 1.4.0 を公開しました #git



昨日 1.3.0 を公開したばかりですが、今日もバージョンアップしました。




1.4.0 の新機能は "--parallel" オプションが追加されました。

リポジトリはこちら(brew からでもインストールできます)

今まで、解析完了までには非常に多くの時間がかかっていました。

その大きな原因は、一つ一つのファイルに対して xargs で git blame を実行していたからです。

ファイルの数が膨大になると非常に多くの時間がかかってしまいます。

"--parallel" オプションをつけると xargs を並列して実行(-P 4オプションを付けた)するため、大幅に時間が短縮されます。

が、大きな問題も増えました。

この問題が原因で、並列実行がデフォルトではなく、オプションという扱いになりました。

問題は出力される結果が不安定になるというものです。←ヤバすぎる

恐らく上手く同期できてない(そもそも同期していない)ことが原因で、実行する度に数行結果がに誤差が生じます。

並列に実行しても問題が生じないように以下のブランチのような対策を施したのですが上手くいかず...(なんか合計の行数が少なくなる)

https://github.com/neethouse/git-count/blob/hoge-parallel/git-count

↑  blame している所を関数として切り出して、それぞれのファイルごとに結果のファイルを出力後、全てのファイルを結合し、行数をカウントするという流れ。

適当に切り上げて不安定なままでもいいやって局面でのみ使用することにして、そのまま公開しました。

"--parallel" オプションの有無で以下のような差がでます(timeの結果)。

"--parallel" 無し

git count .  37.11s user 13.03s system 98% cpu 50.864 total

"--parallel" 有り

git count . --parallel  56.28s user 18.81s system 362% cpu 20.720 total


無しの場合は 終了までに50秒かかっていましたが、有りの場合には20秒ほどで終了しています。

CPU使用率も 98% -> 362%になっているので複数のコアを使えている感じがしていい気がします。


とは言っても、結果が不安定では話にならないので、誰か解決方法を教えてください⁝(ृʾ́꒳ʿ̀ ृ )ु⁝


あと、テストないのでいい加減ヤバイ...
(でもメンドイ)

0 件のコメント:

コメントを投稿