測試環境:
操作系統:CentOS release 6.8 (Final)
操作環境:vi編輯器
任務:對獲取字符串長度的幾種統計方法的性能比較。
測試數據如下:
1.變量自帶的獲取長度的方法
[root@sky9896 scripts]# time for n in {1..10000};do char=`seq -s "skyboy" 100`;echo ${#char} &>/dev/null;done
real 0m19.712s
user 0m5.271s
sys 0m10.414s
------------------------
real 0m18.697s
user 0m5.278s
sys 0m10.369s
2.利用expr自帶的length方法
[root@sky9896 scripts]# time for n in {1..10000};do char=`seq -s "skyboy" 100`;expr length ${char} &>/dev/null;done
real 0m36.181s
user 0m8.434s
sys 0m19.887s
--------------------------
real 0m36.677s
user 0m8.509s
sys 0m19.936s
3.利用管道加wc的方法
[root@sky9896 scripts]# time for n in {1..10000};do char=`seq -s "skyboy" 100`;echo ${char}|wc -L &>/dev/null;done
real 0m48.669s
user 0m15.029s
sys 0m40.589s
--------------------------
real 0m48.935s
user 0m15.125s
sys 0m40.630s
4.利用awk自帶的length函數方法
[root@sky9896 scripts]# time for n in {1..10000};do char=`seq -s "skyboy" 100`;echo $char|awk '{print length($0)}' &>/dev/null;done
real 0m54.038s
user 0m15.225s
sys 0m42.295s
--------------------------
real 0m53.177s
user 0m15.277s
sys 0m42.291s
小結,經過兩輪測試獲得數據比較,第一種方式是用時最少,效率最高;第四種方式用時最多,效率最低。在Shell編程中,考慮效率最高的方式或是易用的程度去選擇。