]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/elftoolchain/ar/benchmark/acp.sh
Update ELF Tool Chain to upstream r3520
[FreeBSD/FreeBSD.git] / contrib / elftoolchain / ar / benchmark / acp.sh
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
6 n=3                     # number of repetitions
7 AR="bsdar gnuar"        # ar archivers to compare
8
9 test $# -ge 2 || {
10     echo "usage: $0 source_dir where_to_place_archive [where_to_extract_it]"
11     exit 0
12 }
13
14 THISDIR=`/bin/pwd`
15 src=$1
16 dst=$2/acp.a
17 ext=${3:-$2}/acptmp
18 test -e $dst -o -e /tmp/acp \
19     && { echo "$dst or /tmp/acp exists, exiting"; exit 1; }
20 mkdir -p $ext || exit 1
21
22 show_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
28 test -d $src || { echo "'$src' is not a directory"; exit 1; }
29
30 # ar versions
31 for ar in $AR; do echo -n "$ar: "; $ar -V | head -n 1;
32 done
33
34 echo
35 echo "best time of $n repetitions"
36 echo -n "               src=$src, "
37 echo -n "`du -sh $src | awk '{print $1}'`"
38 echo -n " in "
39 echo "`find $src | wc -l` files"
40 echo "          archive=$dst, extract to $ext"
41
42 echo "program   operation       real    user    system     speed"
43 for 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
63 done
64 rm -rf $ext $dst
65 rm -f /tmp/acp