Last active
March 26, 2020 01:16
-
-
Save sechiro/3bd58743bb66c2dc3234 to your computer and use it in GitHub Desktop.
スペース区切りで変数を分解するベンチマーク.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -ue | |
NUM_LOOPS=1000 | |
use_cut(){ | |
for i in $(seq 1 $NUM_LOOPS) | |
do | |
line="i-ec56a9f5 vol-07d00601 servername" | |
instance_id=`echo $line | cut -d' ' -f1` | |
volome_id=`echo $line | cut -d' ' -f2` | |
instance_name=`echo $line | cut -d' ' -f3` | |
echo $instance_id | |
echo $volome_id | |
echo $instance_name | |
done | |
} | |
use_set(){ | |
for i in $(seq 1 $NUM_LOOPS) | |
do | |
line="i-ec56a9f5 vol-07d00601 servername" | |
set -- $line | |
instance_id=$1 | |
volome_id=$2 | |
instance_name=$3 | |
echo $instance_id | |
echo $volome_id | |
echo $instance_name | |
done | |
} | |
use_herestring(){ | |
for i in $(seq 1 $NUM_LOOPS) | |
do | |
line="i-ec56a9f5 vol-07d00601 servername" | |
read instance_id volome_id instance_name <<< "$line" | |
echo $instance_id | |
echo $volome_id | |
echo $instance_name | |
done | |
} | |
use_array(){ | |
for i in $(seq 1 $NUM_LOOPS) | |
do | |
line="i-ec56a9f5 vol-07d00601 servername" | |
instance_array=($line) | |
instance_id=${instance_array[0]} | |
volome_id=${instance_array[1]} | |
instance_name=${instance_array[2]} | |
echo $instance_id | |
echo $volome_id | |
echo $instance_name | |
done | |
} | |
use_expansion(){ | |
for i in $(seq 1 $NUM_LOOPS) | |
do | |
line="i-ec56a9f5 vol-07d00601 servername" | |
instance_id=${line%% *} | |
rest_fields=${line% *} | |
volome_id=${rest_fields#* } | |
instance_name=${rest_fields##* } | |
echo $instance_id | |
echo $volome_id | |
echo $instance_name | |
done | |
} | |
echo "cut version" >&2 | |
time use_cut | |
echo "" >&2 | |
echo "set version" >&2 | |
time use_set | |
echo "" >&2 | |
echo "herestring version" >&2 | |
time use_herestring | |
echo "" >&2 | |
echo "bash array version" >&2 | |
time use_array | |
echo "" >&2 | |
echo "bash parameter expansion version" >&2 | |
time use_expansion |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
実行結果