
과 .( Xubuntu 18.04의 기본값) bash
의 성능을 비교하고 있습니다 .dash
sh
- 나는
sh
그것이 더 나을 것이라고 기대한다.bash
- 비트 단위 이동이 나눗셈 연산자보다 빠를 것으로 예상합니다.
그러나 불일치가 발생했습니다.
λ hyperfine --export-markdown a.md -w 3 ./*
Benchmark #1: ./calc-div.bash
Time (mean ± σ): 2.550 s ± 0.033 s [User: 2.482 s, System: 0.068 s]
Range (min … max): 2.497 s … 2.595 s 10 runs
Benchmark #2: ./calc-div.sh
Time (mean ± σ): 2.063 s ± 0.016 s [User: 2.063 s, System: 0.000 s]
Range (min … max): 2.043 s … 2.100 s 10 runs
Benchmark #3: ./calc-shift.bash
Time (mean ± σ): 3.312 s ± 0.034 s [User: 3.255 s, System: 0.057 s]
Range (min … max): 3.274 s … 3.385 s 10 runs
Benchmark #4: ./calc-shift.sh
Time (mean ± σ): 2.087 s ± 0.046 s [User: 2.086 s, System: 0.001 s]
Range (min … max): 2.058 s … 2.211 s 10 runs
Summary
'./calc-div.sh' ran
1.01 ± 0.02 times faster than './calc-shift.sh'
1.24 ± 0.02 times faster than './calc-div.bash'
1.61 ± 0.02 times faster than './calc-shift.bash'
주문하다 | 방법] | 분] | 최대 [초] | 비교적 |
---|---|---|---|---|
./calc-div.bash |
2.550±0.033 | 2,497 | 2.595 | 1.24±0.02 |
./calc-div.sh |
2.063±0.016 | 2.043 | 2.100 | 1.00 |
./calc-shift.bash |
3.312±0.034 | 3.274 | 3.385 | 1.61±0.02 |
./calc-shift.sh |
2.087±0.046 | 2.058 | 2.211 | 1.01±0.02 |
제가 테스트한 스크립트는 다음과 같습니다.
div.bash 계산
#!/usr/bin/env bash
for i in {1..1000000}; do
_=$(( i / 1024 ))
done
계산된iv.sh
i=1
while [ $i -le 1000000 ]; do
_=$(( i / 1024 ))
i=$(( i + 1 ))
done
Shift.bash 계산
for i in {1..1000000}; do
_=$(( i >> 10 ))
done
Shift.sh 계산
#!/usr/bin/env sh
i=1
while [ $i -le 1000000 ]; do
_=$(( i >> 10 ))
i=$(( i + 1 ))
done
5000000의 경우 차이가 더욱 두드러집니다.
주문하다 | 방법] | 분] | 최대 [초] | 비교적 |
---|---|---|---|---|
./calc-div.bash |
13.333±0.202 | 12.870 | 13.584 | 1.23±0.02 |
./calc-div.sh |
10.830±0.119 | 10.750 | 11.150 | 1.00 |
./calc-shift.bash |
17.361±0.357 | 16.995 | 18.283 | 1.60±0.04 |
./calc-shift.sh |
11.226±0.351 | 10.834 | 11.958 | 1.04±0.03 |
Summary
'./calc-div.sh' ran
1.04 ± 0.03 times faster than './calc-shift.sh'
1.23 ± 0.02 times faster than './calc-div.bash'
1.60 ± 0.04 times faster than './calc-shift.bash'
보시다시피 bash
sum 의 dash
경우 나누기 연산자는 동등한 오른쪽 비트 단위 이동보다 빠릅니다.