1#!/bin/sh
2# $Id: acp.sh 2086 2011-10-27 05:18:01Z jkoshy $
3
4# This script is adapted from Jan Psota's Tar Comparison Program(TCP).
5
6n=3			# number of repetitions
7AR="bsdar gnuar"	# ar archivers to compare
8
9test $# -ge 2 || {
10    echo "usage: $0 source_dir where_to_place_archive [where_to_extract_it]"
11    exit 0
12}
13
14THISDIR=`/bin/pwd`
15src=$1
16dst=$2/acp.a
17ext=${3:-$2}/acptmp
18test -e $dst -o -e /tmp/acp \
19    && { echo "$dst or /tmp/acp exists, exiting"; exit 1; }
20mkdir -p $ext || exit 1
21
22show_result ()
23{
24    awk -vL="`du -k $dst`" '{printf "%s\t%s\t%s\%10.1d KB/s\n",
25$1, $3, $5, ($1>0?L/$1:0)}' /tmp/acp | sort | head -n 1
26}
27
28test -d $src || { echo "'$src' is not a directory"; exit 1; }
29
30# ar versions
31for ar in $AR; do echo -n "$ar:	"; $ar -V | head -n 1;
32done
33
34echo
35echo "best time of $n repetitions"
36echo -n "		src=$src, "
37echo -n "`du -sh $src | awk '{print $1}'`"
38echo -n " in "
39echo "`find $src | wc -l` files"
40echo "		archive=$dst, extract to $ext"
41
42echo "program	operation	real	user	system	   speed"
43for op in "cru $dst $src/*" "t $dst" "x `basename $dst`"; do
44    for ar in $AR; do
45	echo -n "$ar	"
46	echo $op | grep -q ^cr && echo -n "create		"
47	echo $op | grep -q ^t && echo -n "list		"
48	echo $op | grep -q ^x && echo -n "extract		"
49	num=0
50	while [ $num -lt $n ]; do
51	    echo $op | grep -q ^cr && rm -f $dst
52	    echo $op | grep -q ^x && { rm -rf $ext; mkdir -p $ext
53		cp $dst $ext; cd $ext; }
54	    sync
55	    time $ar $op > /dev/null 2>> /tmp/acp
56	    echo $op | grep -q ^x && cd $THISDIR
57	    num=`expr $num + 1`
58	done
59	show_result
60	rm -rf /tmp/acp
61    done
62    echo
63done
64rm -rf $ext $dst
65rm -f /tmp/acp
66