| #!/bin/bash |
| # |
| # Produces a .tar file (if one doesn't exist as $TARFILE), then |
| # times how long it takes to untar it onto the current directory. |
| # |
| TARFILE=${TARFILE:=/var/tmp/bench.tar.gz} |
| |
| barf() |
| { |
| echo $@ >2 |
| exit 1 |
| } |
| |
| new_tar() |
| { |
| source="bin sbin lib" |
| if [ ! -f $TARFILE ]; then |
| ( cd / && tar czf $TARFILE $source ) || barf "tar cz failed" |
| fi |
| } |
| |
| run_tar() |
| { |
| # %U=user %S=system %E=elapsed |
| mkdir ./tar || exit 1 |
| size=`ls -Llh $TARFILE | awk '{print $5}'` |
| time=`/usr/bin/time -f '%U, %S, %E' tar xzf $TARFILE 2>&1` |
| status=$? |
| cd .. |
| rm -fr ./tar |
| [ $status -eq 0 ] || exit 1 |
| printf "%6s, %s\n" "$size" "$time" |
| } |
| |
| if [ $# -gt 0 ]; then |
| printf "%6s,%5s,%5s,%8s\n" sz usr sys real |
| exit 0 |
| fi |
| new_tar |
| run_tar |