愕然とする事実発覚。WSLはパイプを使うだけでも遅すぎる
これもforkが遅いからか?

[test1.sh]
foo() { :; }
i=0
while [ $i -lt 1000 ]; do
 foo | foo
 i=$((i+1))
done
--------
time ./test1.sh
real 0m8.005s
user 0m0.047s
sys 0m3.391s

[test2.sh]
foo() { :; }
i=0
while [ $i -lt 1000 ]; do
 foo
 foo # fooの呼び出し回数を合わせるため
i=$((i+1))
done
--------
time ./test2.sh
real 0m0.027s (殆どが起動時間)
user 0m0.000s
sys 0m0.000s