Git のフィルター書いてたんだけど数千ファイルとか扱うと起動コストが馬鹿にならんのか。。
対象は標準入力を受け取って先頭3文字に BOM が入っているかどうかを見てあれば削除みたいなことをやるプロセスなんだけど中身は問題ではないはず。
生 C で作ったやつ
% ll ./a.out
-rwxr-xr-x 1 kazuki-ma staff 26800 11 10 17:00 ./a.out
% time bash -c '
for i in `seq 1000`;
do
echo "" | ./a.out > /dev/null 2> /dev/null
done;
'
1.19s user 1.30s system 96% cpu 2.586 total
Go で作ったやつ
% ll go-version
-rwxr-xr-x 1 kazuki-ma staff 2162200 11 10 13:46 go-version
for i in `seq 1000`;
do
echo "" | ./go-version > /dev/null 2> /dev/null
done;
1.67s user 1.56s system 97% cpu 3.298 total
解ったこと
バイナリファイルサイズ依存かと思ってたけどそんなことはなくマジでプロセス起動は遅い。