📄 incr.sh
字号:
#!/usr/dt/bin/dtksh#!/bin/ksh#set -x# Requires a ksh newer than 11/16/88 because it uses floating point# arithmetic and printf. /usr/dt/bin/dtksh on Solaris and Digital Unix# is such a beast, as are some vendor's ksh93 binary.function doit{ Cmd=$1 echo $Cmd Output=`$Cmd` echo $Output usec=`echo $Output | nawk '{ print $2 }'` (( sum+=usec )) return}function average{ n=$1 echo average: sum=$sum n=$1 printf "%.1f\n\n" $(( sum/(n*1000000) )) sum=0}##########################################################################float sum=0nloop=1000000if [ -x incr_pxmutex1 ]then echo "______________________________ mutex lock; threads" for nthreads in 1 2 3 4 5 do # 3 measurements to average for i in 1 2 3 do doit "incr_pxmutex1 $nloop $nthreads" done average 3 donefi# incr_rwlock1 uses Solaris read-write locks.if [ -x incr_rwlock1 ]then echo "______________________________ read-write lock; threads" for nthreads in 1 2 3 4 5 do for i in 1 2 3 do doit "incr_rwlock1 $nloop $nthreads" done average 3 donefi# incr_rwlock2 uses Digital Unix thread-independent services read-write locks.if [ -x incr_rwlock2 ]then echo "______________________________ read-write lock; threads" for nthreads in 1 2 3 4 5 do for i in 1 2 3 do doit "incr_rwlock2 $nloop $nthreads" done average 3 donefiif [ -x incr_pxsem1 ]then echo "______________________________ Posix memory-based semaphore; threads" for nthreads in 1 2 3 4 5 do for i in 1 2 3 do doit "incr_pxsem1 $nloop $nthreads" done average 3 donefiif [ -x incr_pxsem2 ]then echo "______________________________ Posix named semaphore; threads" for nthreads in 1 2 3 4 5 do for i in 1 2 3 do doit "incr_pxsem2 $nloop $nthreads" done average 3 donefiif [ -x incr_svsem1 ]then echo "______________________________ System V semaphore; threads" for nthreads in 1 2 3 4 5 do for i in 1 2 3 do doit "incr_svsem1 $nloop $nthreads" done average 3 donefiif [ -x incr_svsem2 ]then echo "______________________________ System V semaphores w/UNDO; threads" for nthreads in 1 2 3 4 5 do for i in 1 2 3 do doit "incr_svsem2 $nloop $nthreads" done average 3 donefiif [ -x incr_fcntl1 ]then echo "______________________________ fcntl lock; threads (1 only)" # Cannot do fcntl locking between multiple threads. for nthreads in 1 do for i in 1 2 3 do doit "incr_fcntl1 /tmp/incr_fcntl1 $nloop $nthreads" done average 3 donefi##########################################################################if [ -x incr_pxmutex5 ]then echo "______________________________ mutex lock; processes" for nproc in 1 2 3 4 5 do # 3 measurements to average for i in 1 2 3 do doit "incr_pxmutex5 $nloop $nproc" done average 3 donefiif [ -x incr_rwlock5 ]then echo "______________________________ read-write lock; processes" for nproc in 1 2 3 4 5 do for i in 1 2 3 do doit "incr_rwlock5 $nloop $nproc" done average 3 donefiif [ -x incr_pxsem5 ]then echo "______________________________ Posix memory-based semaphore; processes" for nproc in 1 2 3 4 5 do for i in 1 2 3 do doit "incr_pxsem5 $nloop $nproc" done average 3 donefiif [ -x incr_pxsem6 ]then echo "______________________________ Posix named semaphore; processes" for nproc in 1 2 3 4 5 do for i in 1 2 3 do doit "incr_pxsem6 $nloop $nproc" done average 3 donefiif [ -x incr_svsem5 ]then echo "______________________________ System V semaphore; processes" for nproc in 1 2 3 4 5 do for i in 1 2 3 do doit "incr_svsem5 $nloop $nproc" done average 3 donefiif [ -x incr_svsem6 ]then echo "______________________________ System V semaphore w/UNDO; processes" for nproc in 1 2 3 4 5 do for i in 1 2 3 do doit "incr_svsem6 $nloop $nproc" done average 3 donefiif [ -x incr_fcntl5 ]then echo "______________________________ fcntl lock; processes" for nproc in 1 2 3 4 5 do for i in 1 2 3 do doit "incr_fcntl5 /tmp/incr_fcntl5 $nloop $nproc" done average 3 donefi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -