Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/elftoolchain/ar/benchmark/acp.sh
39536 views
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
66
67