並列for

データ構造をうまく作れば、シェルスクリプトで高速・簡潔に処理できる。 さらにうまく作れば、for文での処理を全てバックグラウンド実行にして マルチスレッドを活かした高速処理ができる。

for文で順次処理するようなものの場合、処理対象の独立性を 確保しておけば、

#!/bin/zsh -f
for d in */*; do
  $d の処理
done
後続処理

とかいう処理を、

#!/bin/zsh -f
for d in */*; do
  $d の処理 &
done
wait
後続処理

とすると並列処理になる。いままで気付かなかったのが悔やまれる。 64スレッド使えるSolaris10/sparcマシンでの268件が対象の処理で、 これまで約100秒かかってたのが10秒以下になった。 「sparcおせー」とか言ってごめんよー。