Size: 1412
Comment:
|
Size: 1162
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 10: | Line 10: |
|| '''Time''' || '''Code''' || || 0m1.153s || j=0; time for i in {1..100000}; do ((j++)); done || || 0m1.381s || j=0; time for i in {1..100000}; do j=$((j+1)); done || || 0m1.498s || j=0; time for i in {1..100000}; do let j++; done || || 5m8.448s || j=0; time for i in {1..100000}; do j=$(expr $j + 1); done || As though you didn't already have enough reason to dump `expr`. |
|| 0m1.153s || {{{j=0; time for i in {1..100000}; do ((j++)); done}}} || || 0m1.381s || {{{j=0; time for i in {1..100000}; do j=$((j+1)); done}}} || || 0m1.498s || {{{j=0; time for i in {1..100000}; do let j++; done}}} || || 5m8.448s || {{{j=0; time for i in {1..100000}; do j=$(expr $j + 1); done}}} || |
Line 21: | Line 18: |
|| '''Time''' || '''Code''' || || 0m1.538s || printf -v i '%s ' {1..100000}; time { echo "$i" >/dev/null; } || || 0m3.112s || printf -v i '%s ' {1..100000}; time { echo $i >/dev/null; } || Another good reason to always quote your expansions. |
|| 0m1.510s || {{{printf -v i '%s ' {1..1000000}; time { : "$i"; } }}} || || 0m2.828s || {{{printf -v i '%s ' {1..1000000}; time { : $i; } }}} || |
Line 30: | Line 24: |
|| '''Time''' || '''Code''' || || 0m1.099s || time for i in {1..100000}; do [[ -d . ]]; done || || 0m2.110s || time for i in {1..100000}; do [ -d . ]; done || || 3m47.509s || time for i in {1..100000}; do /bin/test -d .; done || `[[` isn't just more featureful, it's also twice as fast. |
|| 0m1.099s || {{{time for i in {1..100000}; do [[ -d . ]]; done}}} || || 0m2.110s || {{{time for i in {1..100000}; do [ -d . ]; done}}} || || 3m47.509s || {{{time for i in {1..100000}; do /bin/test -d .; done}}} || |
Some rough benchmarks
To compare different approaches to a problem with regards to performance, here's some rough benchmarks which may be system-dependent. Feel free to run each test yourself to see how your system fares.
Results are always sorted with the winners on top. All tests were repeated multiple times to make sure deviations did not exceed acceptable levels or cross result boundaries.
Math
0m1.153s |
j=0; time for i in {1..100000}; do ((j++)); done |
0m1.381s |
j=0; time for i in {1..100000}; do j=$((j+1)); done |
0m1.498s |
j=0; time for i in {1..100000}; do let j++; done |
5m8.448s |
j=0; time for i in {1..100000}; do j=$(expr $j + 1); done |
Quoting
0m1.510s |
printf -v i '%s ' {1..1000000}; time { : "$i"; } |
0m2.828s |
printf -v i '%s ' {1..1000000}; time { : $i; } |
Testing
0m1.099s |
time for i in {1..100000}; do [[ -d . ]]; done |
0m2.110s |
time for i in {1..100000}; do [ -d . ]; done |
3m47.509s |
time for i in {1..100000}; do /bin/test -d .; done |