Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #14966 > unrolled thread
| Started by | Peng Yu <pengyu.ut@gmail.com> |
|---|---|
| First post | 2018-12-26 21:49 -0600 |
| Last post | 2018-12-26 21:49 -0600 |
| Articles | 1 — 1 participant |
Back to article view | Back to gnu.bash.bug
Should [[ -v 1 ]] be supported? Peng Yu <pengyu.ut@gmail.com> - 2018-12-26 21:49 -0600
| From | Peng Yu <pengyu.ut@gmail.com> |
|---|---|
| Date | 2018-12-26 21:49 -0600 |
| Subject | Should [[ -v 1 ]] be supported? |
| Message-ID | <mailman.6354.1545882601.1284.bug-bash@gnu.org> |
Hi,
[[ -v 1 ]] does not work for $1.
$ [ -v 1 ]; echo "$?"
1
$ set -- a
$ [ -v 1 ]; echo "$?"
1
Although [[ -z ${1+s} ]] and (($#)) works for testing if $1 is set,
neither of them are uniformly better performance wise. In this case,
should [[ -v 1 ]] be supported?
set -- $(seq 1)
time for ((i=0;i<10000;++i)); do
(($#))
done
real 0m0.140s
user 0m0.132s
sys 0m0.001s
time for ((i=0;i<10000;++i)); do
[[ -z ${1+s} ]]
done
real 0m0.216s
user 0m0.151s
sys 0m0.000s
time for ((i=0;i<10000;++i)); do
[[ -z ${1+s} ]]
done
real 0m0.336s
user 0m0.156s
sys 0m0.009s
set -- $(seq 10)
time for ((i=0;i<10000;++i)); do
(($#))
done
real 0m0.224s
user 0m0.130s
sys 0m0.001s
time for ((i=0;i<10000;++i)); do
[[ -z ${1+s} ]]
done
real 0m0.256s
user 0m0.147s
sys 0m0.000s
set -- $(seq 100)
time for ((i=0;i<10000;++i)); do
(($#))
done
real 0m0.260s
user 0m0.131s
sys 0m0.001s
time for ((i=0;i<10000;++i)); do
[[ -z ${1+s} ]]
done
real 0m0.244s
user 0m0.146s
sys 0m0.001s
set -- $(seq 1000)
time for ((i=0;i<10000;++i)); do
(($#))
done
real 0m0.338s
user 0m0.167s
sys 0m0.002s
time for ((i=0;i<10000;++i)); do
[[ -z ${1+s} ]]
done
real 0m0.277s
user 0m0.144s
sys 0m0.000s
set -- $(seq 10000)
time for ((i=0;i<10000;++i)); do
(($#))
done
real 0m1.012s
user 0m0.540s
sys 0m0.011s
time for ((i=0;i<10000;++i)); do
[[ -z ${1+s} ]]
done
real 0m0.292s
user 0m0.148s
sys 0m0.003s
--
Regards,
Peng
Back to top | Article view | gnu.bash.bug
csiph-web