#!/bin/sh # do a quick performance test of pseudo opt_f=false flag_f= while getopts "f" o do case $o in f) opt_f=true flag_f=-f ;; \?) die "Usage: perftest [-f] [directory]";; esac; done shift `expr $OPTIND - 1` die() { printf "%s\n" "$*" >&2 exit 1 } doit() ( cd $dir printf "%s\n" "Making test data..." time ./makedata printf "%s\n" "Timing tar command." time sh -c 'tar cf - dir_[0-9] | tar -C new -xf -' printf "%s\n" "Timing find command." time find new -perm 0100 -exec true {} + printf "%s\n" "Timing rm." time rm -rf dir_[0-9] new ) [ -x bin/pseudo ] || die "You need a bin/pseudo to test." case $# in 0) dir="perftest.d";; 1) [ -d "$1" ] || die "Specify an existing directory to test in. '%s' is not a directory." "$1" dir="$1/perftest.d" ;; *) die "Usage: perftest [directory]" ;; esac if $opt_f || [ `id -u` = x0 ]; then printf "Running test in %s.\n" "$dir" doit printf "Done.\n" else [ -d $dir ] && die "Directory '$dir' already exists, delete it if you're done." mkdir $dir mkdir -p $dir/new cc -o $dir/makedata makedata.c printf "%s\n" "Running performance test (total time at end)" time bin/pseudo ./perftest -f ${dir%perftest.d} rm -rf $dir fi