初歩のシェルスクリプトで遊ぶ[ファイルのリネームツール、のようなもの?_(6)]

#!/bin/bash
# ============================================
# 配列は1つずつ読み出すべきか?
# ============================================

echo '配列を3つ作る'
ARR1=(`seq 0 1234567`)
ARR2=(`seq 0 1234567`)
ARR3=(`seq 0 1234567`)

SECONDS=0
echo '1つのforループの中で、3つの配列を読み出す / 10'
for N in `seq 0 123456` ; do
echo ${ARR1[N]} ${ARR2[N]} ${ARR3[N]}
done 1>/dev/null
echo ${SECONDS}

read
SECONDS=0

echo '1つのループで1つの配列を読み出すx3'
for N in `seq 0 1234567` ; do
echo ${ARR1[N]}
done 1>/dev/null
for N in `seq 0 1234567` ; do
echo ${ARR2[N]}
done 1>/dev/null
for N in `seq 0 1234567` ; do
echo ${ARR3[N]}
done 1>/dev/null

echo ${SECONDS}


read
SECONDS=0

echo 'pasteとプロセス置換'
for N in `seq 0 1234567` ; do
echo ${ARR1[N]}
done | paste -d " " - \
<( for N in `seq 0 1234567`
do echo ${ARR2[N]} ; done ) \
<( for N in `seq 0 1234567`
do echo ${ARR3[N]} ; done )  >/dev/null

echo ${SECONDS}
配列を3つ作る
1つのforループの中で、3つの配列を読み出す / 10
328

1つのループで1つの配列を読み出すx3
42

pasteとプロセス置換
32

「配列1/配列2/配列3」って感じで、配列を区切り文字で一列にして、標準出力から出す、というのをやってたら、なんか遅くなったなと。書き換えたときに。
ループの中で複数の配列を一つずつ読み出すと、結果だけ見れば、かなり遅い。
プロセス置換すれば複数コアを使ってくれてるけど、あんまり、こういう書き方はしたくないやね。速くても。


Ubuntu18.04のbashの話です。上のは。バージョン4、何だったか。
Ubuntu20.04にアップグレードしたら、上記の問題は消えました。普通に一つのループで全部読みだすのが、いちばん早い。
なんかあったんすかね。改善とかいろいろと。