Elon Musk oznámil (𝕏) spuštění internetové encyklopedie Grokipedia (Wikipedia). Zatím ve verzi 0.1. Verze 1.0 prý bude 10x lepší, ale i ve verzi 0.1 je podle Elona Muska již lepší než Wikipedia.
PSF (Python Software Foundation) po mnoha měsících práce získala grant ve výši 1,5 milionu dolarů od americké vládní NSF (National Science Foundation) v rámci programu "Bezpečnost, ochrana a soukromí open source ekosystémů" na zvýšení bezpečnosti Pythonu a PyPI. PSF ale nesouhlasí s předloženou podmínkou grantu, že během trvání finanční podpory nebude žádným způsobem podporovat diverzitu, rovnost a inkluzi (DEI). PSF má diverzitu přímo ve svém poslání (Mission) a proto grant odmítla.
Balík nástrojů Rust Coreutils / uutils coreutils, tj. nástrojů z GNU Coreutils napsaných v programovacím jazyce Rust, byl vydán ve verzi 0.3.0. Z 634 testů kompatibility Rust Coreutils s GNU Coreutils bylo úspěšných 532, tj. 83,91 %. V Ubuntu 25.10 se již používá Rust Coreutils místo GNU Coreutils, což může přinášet problémy, viz například nefunkční automatická aktualizace.
Od 3. listopadu 2025 budou muset nová rozšíření Firefoxu specifikovat, zda shromažďují nebo sdílejí osobní údaje. Po všech rozšířeních to bude vyžadováno někdy v první polovině roku 2026. Tyto informace se zobrazí uživateli, když začne instalovat rozšíření, spolu s veškerými oprávněními, která rozšíření požaduje.
Jste nuceni pracovat s Linuxem? Chybí vám pohodlí, které vám poskytoval Microsoft, když vás špehoval a sledoval všechno, co děláte? Nebojte se. Recall for Linux vám vrátí všechny skvělé funkce Windows Recall, které vám chyběly.
Společnost Fre(i)e Software oznámila, že má budget na práci na Debianu pro tablety s cílem jeho vyžívání pro vzdělávací účely. Jako uživatelské prostředí bude použito Lomiri.
Proběhla hackerská soutěž Pwn2Own Ireland 2025. Celkově bylo vyplaceno 1 024 750 dolarů za 73 unikátních zranitelností nultého dne (0-day). Vítězný Summoning Team si odnesl 187 500 dolarů. Shrnutí po jednotlivých dnech na blogu Zero Day Initiative (1. den, 2. den a 3. den) a na YouTube.
Byl publikován říjnový přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Pracuje se na podpoře M3. Zanedlouho vyjde Fedora Asahi Remix 43. Vývojáře lze podpořit na Open Collective a GitHub Sponsors.
Iniciativa Open Device Partnership (ODP) nedávno představila projekt Patina. Jedná se o implementaci UEFI firmwaru v Rustu. Vývoj probíhá na GitHubu. Zdrojové kódy jsou k dispozici pod licencí Apache 2.0. Nejnovější verze Patiny je 13.0.0.
Obrovská poptávka po plynových turbínách zapříčinila, že datová centra začala používat v generátorech dodávajících energii pro provoz AI staré dobré proudové letecké motory, konvertované na plyn. Jejich výhodou je, že jsou menší, lehčí a lépe udržovatelné než jejich průmyslové protějšky. Proto jsou ideální pro dočasné nebo mobilní použití.
comptest.bash: (spouštění na vlastní nebezpečí)
#!/bin/bash
#comprimation methods/commands
#for CMDA[] eval is used
TXTA=()
CMDA=()
EXTA=()
#bzip2 and gzip
TXTA+=( 'gz -9' )
EXTA+=( '.gz' )
CMDA+=( "gzip -9 '[file]'" )
TXTA+=( 'bz2 -9' )
EXTA+=( '.bz2' )
CMDA+=( "bzip2 -9 '[file]'" )
TXTA+=( 'gz.bz2 -9 -9' )
EXTA+=( '.gz.bz2' )
CMDA+=( "gzip -9 -c '[file]' | bzip2 -9 > '[file]${EXTA[2]}'" )
TXTA+=( 'bz2.gz -9 -9' )
EXTA+=( '.bz2.gz' )
CMDA+=( "bzip2 -9 -c '[file]' | gzip -9 > '[file]${EXTA[3]}'" )
#7zip
TXTA+=( '7z' )
EXTA+=( '.7z' )
CMDA+=( "7z a -bd '[file]${EXTA[4]}' '[file]'" )
TXTA+=( '7z.gz -txz -9' )
EXTA+=( '.7z.gz' )
CMDA+=( "7z a -bd -an -txz -so '[file]' | gzip -9 > '[file]${EXTA[5]}'" )
TXTA+=( '7z.bz2 -txz -9' )
EXTA+=( '.7z.bz2' )
CMDA+=( "7z a -bd -an -txz -so '[file]' | bzip2 -9 > '[file]${EXTA[6]}'" )
TXTA+=( 'gz.7z -txz -9' )
EXTA+=( '.gz.7z' )
CMDA+=( "gzip -9 -c '[file]' | 7z a -bd -txz -si '[file]${EXTA[7]}'" )
TXTA+=( 'bz2.7z -9 -txz' )
EXTA+=( '.bz2.7z' )
CMDA+=( "bzip2 -9 -c '[file]' | 7z a -bd -txz -si '[file]${EXTA[8]}'" )
TXTA+=( '7z.gz.bz2 -txz -9 -9' )
EXTA+=( '.7z.gz.bz2' )
CMDA+=( "7z a -bd -an -txz -so '[file]' | gzip -9 | bzip2 -9 > '[file]${EXTA[9]}'" )
TXTA+=( '7z.bz2.gz -txz -9 -9' )
EXTA+=( '.7z.bz2.gz' )
CMDA+=( "7z a -bd -an -txz -so '[file]' | bzip2 -9 | gzip -9 > '[file]${EXTA[10]}'" )
TXTA+=( 'gz.7z.bz2 -9 -txz -9' )
EXTA+=( '.gz.7z.bz2' )
CMDA+=( "gzip -9 -c '[file]' | 7z a -bd -an -txz -si -so | bzip2 -9 > '[file]${EXTA[11]}'" )
TXTA+=( 'bz2.7z.gz -9 -txz -9' )
EXTA+=( '.bz2.7z.gz' )
CMDA+=( "bzip2 -9 -c '[file]' | 7z a -bd -an -txz -si -so | gzip -9 > '[file]${EXTA[12]}'" )
TXTA+=( 'gz.bz2.7z -9 -9 -txz' )
EXTA+=( '.gz.bz2.7z' )
CMDA+=( "gzip -9 -c '[file]' | bzip2 -9 | 7z a -bd -txz -si '[file]${EXTA[13]}'" )
TXTA+=( 'bz2.gz.7z -9 -9 -txz' )
EXTA+=( '.bz2.gz.7z' )
CMDA+=( "bzip2 -9 -c '[file]' | gzip -9 | 7z a -bd -txz -si '[file]${EXTA[14]}'" )
TXTA+=( 'gz -1' )
EXTA+=( '.1.gz' )
CMDA+=( "gzip -1 -c '[file]' > '[file].1.gz'" )
TXTA+=( 'bz2 -1' )
EXTA+=( '.1.bz2' )
CMDA+=( "bzip2 -1 -c '[file]' > '[file].1.bz2'" )
TXTA+=( 'gz -2' )
EXTA+=( '.2.gz' )
CMDA+=( "gzip -2 -c '[file]' > '[file].2.gz'" )
TXTA+=( 'bz2 -2' )
EXTA+=( '.2.bz2' )
CMDA+=( "bzip2 -2 -c '[file]' > '[file].2.bz2'" )
TXTA+=( 'gz -3' )
EXTA+=( '.3.gz' )
CMDA+=( "gzip -3 -c '[file]' > '[file].3.gz'" )
TXTA+=( 'bz2 -3' )
EXTA+=( '.3.bz2' )
CMDA+=( "bzip2 -3 -c '[file]' > '[file].3.bz2'" )
TXTA+=( 'gz -4' )
EXTA+=( '.4.gz' )
CMDA+=( "gzip -4 -c '[file]' > '[file].4.gz'" )
TXTA+=( 'bz2 -4' )
EXTA+=( '.4.bz2' )
CMDA+=( "bzip2 -4 -c '[file]' > '[file].4.bz2'" )
TXTA+=( 'gz -5' )
EXTA+=( '.5.gz' )
CMDA+=( "gzip -5 -c '[file]' > '[file].5.gz'" )
TXTA+=( 'bz2 -5' )
EXTA+=( '.5.bz2' )
CMDA+=( "bzip2 -5 -c '[file]' > '[file].5.bz2'" )
TXTA+=( 'gz -6' )
EXTA+=( '.6.gz' )
CMDA+=( "gzip -6 -c '[file]' > '[file].6.gz'" )
TXTA+=( 'bz2 -6' )
EXTA+=( '.6.bz2' )
CMDA+=( "bzip2 -6 -c '[file]' > '[file].6.bz2'" )
TXTA+=( 'gz -7' )
EXTA+=( '.7.gz' )
CMDA+=( "gzip -7 -c '[file]' > '[file].7.gz'" )
TXTA+=( 'bz2 -7' )
EXTA+=( '.7.bz2' )
CMDA+=( "bzip2 -7 -c '[file]' > '[file].7.bz2'" )
TXTA+=( 'gz -8' )
EXTA+=( '.8.gz' )
CMDA+=( "gzip -8 -c '[file]' > '[file].8.gz'" )
TXTA+=( 'bz2 -8' )
EXTA+=( '.8.bz2' )
CMDA+=( "bzip2 -8 -c '[file]' > '[file].8.bz2'" )
TXTA+=( 'lrzip -L 9' )
EXTA+=( '.lrz' )
CMDA+=( "lrzip -L 9 '[file]'" )
TXTA+=( 'rzip -9' )
EXTA+=( '.rz' )
CMDA+=( "rzip -9 '[file]'" )
#here you can add item(s) begin
# index 33
#here you can add item(s) end
TAR_CMD=( "tar -cf" "tar -rf" )
#default values
TESTS=( 0 1 2 3 )
TMP='/tmp'
TMPDIR='comptest'
INPUTTYPE="-10"
VERBOSE=0
VERBOSE_REPORT=0
USE_TIME=0
STOPIT=0
LEAVE_COMP=0
SAVE_FILENAME=''
OPEN_FILENAME=''
TAR_FILENAME=''
TAR_TMP_DIR="TAR-TMP-DIR_0123456789QWX_$(date '+%s')"
SIZE_OF_BLOCK='4096'
#do not change ADD_SIZE_TO_BLOCK, it was a good idea but has been forgotten :(
ADD_SIZE_TO_BLOCK='0'
REPORT_SPEED_W='0.5'
REPORT_RATIO_W='0.5'
REPORT_RATIO_MIN='0.75'
REPORT_SPEED_MIN='4194304'
GRAPH_POINT='[letter]'
GRAPH_POINT_L='0'
BCCMD="$( which bc )"
if [ "$?" -ne "0" ]; then
echo -e "\n'bc' should be installed\n" >&2
exit 3
fi
function waitforkey() {
if [ "$STOPIT" -eq "1" ]; then
read -p "Press any key to continue... " -n1 -s
echo ''
fi
}
function waitforkey2() {
if [ "$STOPIT" -eq "1" ]; then
read -n1 -s
echo ''
fi
}
#getopt parse -----------------------
while getopts ":vmn:t:T:u:hb:fir:R:s:S:cIw:o:e:dLl" opt; do
case $opt in
n)
if [ "$OPTARG" == "gz" ]; then
TESTS=( 15 17 19 21 23 25 27 29 0 )
elif [ "$OPTARG" == "bz2" ]; then
TESTS=( 16 18 20 22 24 26 28 30 1 )
elif [ "$OPTARG" == "gzbz2" ]; then
TESTS=( 15 17 19 21 23 25 27 29 0 16 18 20 22 24 26 28 30 1 )
elif [ "${OPTARG}" == "allbest1" ]; then
TESTS=( 0 1 31 32 )
elif [ "${OPTARG:0:1}" == "e" ]; then
TESTS=( ${OPTARG:1} )
else
TESTS=()
cnt="$((${OPTARG}+1))"
if [ ${cnt} -gt ${#CMDA[@]} ]; then
cnt="${#CMDA[@]}"
fi
for(( i=0; i < "$cnt"; i++ )); do
TESTS+=( $i )
done
fi
if [ ${#TESTS[@]} -lt "1" ]; then
echo 'Ilegal -n value.' >&2
exit 1
fi
;;
t)
TMP="$OPTARG"
if [ ! -d ${TMP} ]; then
echo "-t Temp path '${TMP}' doesn't exist." >&2
exit 1
fi
;;
T)
TMPDIR="$OPTARG"
;;
u)
TAR_TMP_DIR="$OPTARG"
;;
m)
USE_TIME=1
;;
v)
VERBOSE=1
;;
c)
GRAPH_POINT="\e[7m[letter]\033[0m"
GRAPH_POINT_L='12'
;;
b)
SIZE_OF_BLOCK="$( echo "$OPTARG+0" | $BCCMD )"
if [ -z "$SIZE_OF_BLOCK" ]; then
echo "Ilegal -b value." >&2
exit 1
fi
if [ "$SIZE_OF_BLOCK" -lt "1" ]; then
echo "Ilegal -b value." >&2
exit 1
fi
;;
#B)
# ADD_SIZE_TO_BLOCK="$( echo "$OPTARG+0" | $BCCMD )"
# if [ -z "$ADD_SIZE_TO_BLOCK" ]; then
# echo "Ilegal -B value." >&2
# exit 1
# fi
# if [ "$ADD_SIZE_TO_BLOCK" -lt "0" ]; then
# echo "Ilegal -B value." >&2
# exit 1
# fi
# ;;
r)
REPORT_RATIO_W="$( echo "x=$OPTARG+0; if(x>0&&x<1) x;" | $BCCMD )"
if [ -z "$REPORT_RATIO_W" ]; then
echo 'Ilegal -r value (0<x<1).' >&2
exit 1
fi
;;
R)
REPORT_RATIO_MIN="$( echo "x=$OPTARG+0; if(x>0&&x<1) x;" | $BCCMD )"
if [ -z "$REPORT_RATIO_MIN" ]; then
echo 'Ilegal -R value (0<x<1).' >&2
exit 1
fi
;;
s)
REPORT_SPEED_W="$( echo "x=$OPTARG+0; if(x>0&&x<1) x;" | $BCCMD )"
if [ -z "$REPORT_SPEED_W" ]; then
echo 'Ilegal -s value \(0<x<1\).' >&2
exit 1
fi
;;
S)
REPORT_SPEED_MIN="$( echo "x=$OPTARG+0; if(x>1) x;" | $BCCMD )"
if [ -z "$REPORT_SPEED_MIN" ]; then
echo 'Ilegal -S value (x>1).' >&2
exit 1
fi
;;
i)
INPUTTYPE="-2"
break
;;
f)
INPUTTYPE="-1"
shift $(( OPTIND - 1 ))
break
;;
o)
INPUTTYPE="-3"
OPEN_FILENAME="$OPTARG"
if [ ! -f "${OPEN_FILENAME}" ]; then
echo "Ilegal -o value, file '${OPEN_FILENAME}' doesn't exist." >&2
exit 1
fi
break
;;
I)
STOPIT=1
;;
l)
LEAVE_COMP=1
;;
L)
LEAVE_COMP=2
;;
e)
TAR_FILENAME="$OPTARG"
if [ -f "${TAR_FILENAME}" ]; then
echo "Write report file -w '${TAR_FILENAME}' exists." >&2
exit
fi
;;
d)
INPUTTYPE="-4"
break
;;
w)
SAVE_FILENAME="$OPTARG"
if [ -f "${SAVE_FILENAME}" ]; then
echo "Write report file -w '${SAVE_FILENAME}' exists." >&2
exit
fi
;;
h)
echo 'A small test of comprimation method performance.'
echo ' By Igor Mega, ver: 0.12, license: BSD 3-clause'
echo ' '
echo " This test create the 'comptest' directory (by default) in /tmp (by default)."
echo ' All is done in this direcory (before/after a comprim command cd is used).'
echo " Each tested file is copied (by 'cp') to this directory more times."
echo ' Only on success all created and copied files in this directory are deleted.'
echo " The create 'comptest' direcotry is deleted too (if is empty on finish)."
echo ' WARMING:'
echo ' If you break this test or an error si reached clean it yourself!'
echo ' '
waitforkey
echo ' comptest.bash [switch] -i or -f or -d or -o'
echo ' -n X maximum number of test (default is -n "3" or -n "e0 1 2 3")'
echo ' 0 = gzip -9'
echo ' 1 = gzip -9, bzip2 -9'
echo ' 2 = + gzip -9, bzip2 -9 combination [DEFAULT]'
echo ' 4 = + 7z'
echo ' 8 = + gz.7z, bz2.7z, 7z.gz, 7z.bz2 (-9)'
echo ' 14 = + all 7z gz bz2 combination (-9 -9)'
echo ' 30 = + gzip -1, bzip2 -1 to gzip -8, bzip2 -8'
echo ' 31 = + lrzip -L 9'
echo ' 32 = + rzip'
echo ' -n gz = 1 16 18 20 22 24 26 28 30 (gzip -1 - gzip -9)'
echo ' -n bz2 = 2 17 19 21 23 25 27 29 31 (bzip2 -1 - bzip2 -9)'
echo ' -n gzbz2 = gz + bz2'
echo ' -n allbest1 = gz -9, bz2 -9, 7z, lrzip -L 9, rzip -9'
echo ' -n eX = X is space separated № of tests'
echo ' '
waitforkey
echo " -t 'temp/working direcotry path', have to exists, /tmp; is default"
echo " -T 'test direcotry name', must not exists 'comptest' is default"
echo " -u 'test tar-sub-direcotry name', used with '-d' action."
echo " The name is unique name, same name directory as input."
echo " mast not exist. Default: TAR-TMP-DIR_0123456789QWX_\$(date '+%s')"
echo ' '
echo ' -v verbose process'
echo " -w 'file name' of save results !full absolute path!"
echo " The saved file can be read by -o action"
echo " -e 'file name' of saved tar !full absolute path!"
echo " The created tar file contains all files with full path!"
echo ' -m use "time" for each test (use with -v)'
echo ' '
echo " -l (small letter 'L') leave all compressed files"
echo ' -L leave the best compreesed ratio file'
echo ' '
waitforkey
echo " -b 'size' of device block, default 4096"
echo ' if -o is used this value is restored from -o file'
echo ' '
echo " -s 'speed' \"weight\" abstract limit for slow/fast depends on mim-max internval,"
echo ' default 0.5'
echo " -r 'ratio' \"weight\" abstract limit for bad/good depends on mim-max internval,"
echo ' default 0.5'
echo " -R 'min' commpresion ratio for graph (dot vertical line) default 0.75."
echo ' (compressed is 25 % smaller)'
echo ' if the value is out of graph area the border of graph is interleaved '
echo ' by dots on right or left side'
echo " -S 'min' speed for graph (tilda horizontal line) default 4194304 = 4MiB/sec."
echo ' if the value is out of graph area the spaces on the left & right of '
echo ' text "compression ratio" is filled by ~ (on top or bottom)'
echo ' '
waitforkey
echo ' -i input full filename from stdin'
echo ' USE AS LAST PARAMETR (next paramters are not used)'
echo ' all no-regular-file will be ignored'
echo ' !Use full absolute path!'
echo ' -d input full direcory name from stdin'
echo ' on each directory tar is used and the tar is tested'
echo ' USE AS LAST PARAMETR (next paramters are not used)'
echo ' all no-director will be ignored'
echo ' !Use full absolute path!'
echo ' -f input full filenames as next parameters'
echo ' USE AS LAST PARAMETR (next paramters are the full file names)'
echo ' all no-regular-file is ignored'
echo ' !Use full absolute path!'
echo ' -o file name, read saved result file - no test, show result only'
echo ' USE AS LAST PARAMETR (next paramters is the file name only)'
echo ' '
echo ' -I stop each max 25 lines (for help use it as the first parametr)'
echo ' -c use invertcolor in graph'
waitforkey
echo ' '
echo ' Example:'
echo ' comptest.bash -f fullfilename fullfilename fullfilename'
echo ' or'
echo ' find ./* -type f -exec readlink -f {} \; | ./comptest.bash -i'
echo ' or'
echo ' find /fullpath/dir/ -midepth 1 maxdepth 1 -type d | ./comptest.bash -d'
exit 0
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
if [ ! -d "${TMP}" ]; then
echo "Use -t, Temp path '${TMP}' doesn't exist." >&2
exit 1
fi
if [ -d "${TMP}/${TMPDIR}" ]; then
echo "Use -T, Testing directory '${TMPDIR}' already exist (Maybe it is an artefact from an unfinished test)." >&2
exit 1
fi
if [ "${INPUTTYPE}" -lt "-4" ]; then
echo "Use -i or -f or -d or -o param, or -h for help." >&2
exit 1
fi
#Functions -----------------------
HLP_BC_FORMAT_OUT_NUMBER4='if(x<1000) print " "; if(x<100) print " "; if(x<10) print " "; if(x<1) print 0; x'
HLP_BC_FORMAT_OUT_NUMBER4INT='if(x<1000) print " "; if(x<100) print " "; if(x<10) print " "; x'
HLP_BC_FORMAT_OUT_NUMBER2INT='if(x<10) print " "; x'
HLP_BC_FORMAT_OUT_NUMBER6INT='if(x<1000000) print " "; if(x<100000) print " "; if(x<10000) print " "; if(x<1000) print " "; if(x<100) print " "; if(x<10) print " "; x'
HLP_BC_FORMAT_OUT_NUMBER1='if(x<1 && x>0) print 0; x'
HLP_BC_FORMAT_OUT_NUMBER2='if(x<10) print " "; if(x<1) print 0; x'
HLP_BC_FORMAT_OUT_NUMBER1INT='x'
HLP_BC_FORMAT_DIGIT0='scale=0; if(x<0)x=(x-0.5)/1; if(x>=0)x=(x+0.5)/1;'
HLP_BC_FORMAT_DIGIT2="scale=6; x=x*100; ${HLP_BC_FORMAT_DIGIT0} scale=2; x=x/100;"
HLP_BC_FORMAT_DIGIT3="scale=6; x=x*1000; ${HLP_BC_FORMAT_DIGIT0}; scale=3; x=x/1000;"
HLP_BC_FORMAT_DIGIT4="scale=6; x=x*10000; ${HLP_BC_FORMAT_DIGIT0}; scale=4; x=x/10000;"
function gettime() {
echo -n $( date +'%s.%N' )
}
#1st argument start time
#2st argument finished time
#3st argument size
function getspeed() {
if [ -z "$1" -a -z "$2" -a -z "$3" ]; then
echo "Type of input of getspeed function mismatch error." >&2
exit 3
fi
echo "scale=9; x=$3/( $2 - $1 ); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD
}
#1st argument start time
#2st argument compresed size
function getratio() {
if [ -z "$1" -a -z "$2" ]; then
echo "Type of input of getratio function mismatch error." >&2
exit 3
fi
echo "scale=9; x=$2/$1; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD
}
#1st argument start time
#2st argument compresed size
function getratio_block() {
if [ -z "$1" -a -z "$2" ]; then
echo "Type of input of getratio function mismatch error." >&2
exit 3
fi
a="$( echo "scale=0; a=($1/${SIZE_OF_BLOCK})+1; scale=9; a*(${SIZE_OF_BLOCK} + ${ADD_SIZE_TO_BLOCK})" | $BCCMD )"
b="$( echo "scale=0; a=($2/${SIZE_OF_BLOCK})+1; scale=9; a*(${SIZE_OF_BLOCK} + ${ADD_SIZE_TO_BLOCK})" | $BCCMD )"
echo "scale=9; x=$b/$a; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD
}
#mult by 100; with 2 decimal digits
function format_ratio() {
if [ -z "$1" ]; then
echo "Type of input of format_ratio function mismatch error." >&2
exit 3
fi
if [ "$#" -gt "1" ]; then
r="$( echo "scale=9; x=$1*100.0; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
echo -n "$r %"
exit 1
fi
r="$( echo "scale=9; x=$1*100.0; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER4}" | $BCCMD )"
r2="$( echo "x=$1; ${HLP_BC_FORMAT_DIGIT4} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
echo -n "${r} % (${r2})"
}
#speed i B/sec, KiB/sec MiB/sec
function format_speed() {
if [ -z "$1" ]; then
echo "Type of input of format_speed function mismatch error." >&2
exit 3
fi
n2="$( echo "$1 > 734208" | $BCCMD )"
n1="$( echo "$1 > 717" | $BCCMD )"
if [ "$n2" -eq "1" ]; then
d='1048576'
suff='MiB/sec'
elif [ "$n1" -eq "1" ]; then
d='1024'
suff='KiB/sec'
else
d='1'
suff='B/sec '
fi
r="$( echo "scale=9; x=$1/$d; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER4}" | $BCCMD )"
if [ "$#" -gt "1" ]; then
echo -n "$r $suff"
exit 1
fi
r2="$( echo "x=$1; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER1INT}" | $BCCMD )"
echo -n "$r $suff (${r2} B/sec)"
}
function format_size() {
if [ -z "$1" ]; then
echo "Type of input of format_size function mismatch error." >&2
exit 3
fi
n4="$( echo "$1 > 769872887808" | $BCCMD )"
n3="$( echo "$1 > 751828992" | $BCCMD )"
n2="$( echo "$1 > 734208" | $BCCMD )"
n1="$( echo "$1 > 717" | $BCCMD )"
if [ "$n4" -eq "1" ]; then
d='1099511627776'
suff='TiB'
elif [ "$n3" -eq "1" ]; then
d='1073741824'
suff='GiB'
elif [ "$n2" -eq "1" ]; then
d='1048576'
suff='MiB'
elif [ "$n1" -eq "1" ]; then
d='1024'
suff='KiB'
else
d='1'
suff='B'
fi
r="$( echo "scale=9; x=$1/$d; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER4}" | $BCCMD )"
r2="$( echo "x=$1; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER1INT}" | $BCCMD )"
if [ "$d" -eq "1" ]; then
r="$( echo "x=$1; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER4INT}" | $BCCMD )"
echo -n "${r} $suff (${r2} B)"
else
echo -n "${r} $suff (${r2} B)"
fi
}
function format_time() {
if [ -z "$1" ]; then
echo "Type of input of format_time function mismatch error." >&2
exit 3
fi
rmin="$( echo "x=$1/60; ${HLP_BC_FORMAT_OUT_NUMBER2INT}" | $BCCMD )"
rsec="$( echo "scale=6; x=$1 - ${rmin}*60; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER2}" | $BCCMD )"
rt="$( echo "x=$1; ${HLP_BC_FORMAT_DIGIT4} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
echo -n "${rmin} min ${rsec} sec (${rt} sec)"
}
#1st param value array
#return sorted index asc based on 1st param
BUBBLE_DESC=0
BUBBLE_RES=()
function bubble_sort() {
local array=($@)
local max=$(($# - 1))
BUBBLE_RES=()
for((i=0; i < $#; i++)); do
BUBBLE_RES+=("$i")
done
while ((max > 0))
do
i=0
while ((i < max))
do
if [ "${BUBBLE_DESC}" -eq "0" ]; then
r="$( echo "${array[$i]} < ${array[$((i + 1))]}" | $BCCMD )"
else
r="$( echo "${array[$i]} > ${array[$((i + 1))]}" | $BCCMD )"
fi
if [ "$r" -eq "1" ]; then
v=${array[$i]}
k=${BUBBLE_RES[$i]}
array[$i]=${array[$((i + 1))]}
BUBBLE_RES[$i]=${BUBBLE_RES[$((i + 1))]}
array[$((i + 1))]=$v
BUBBLE_RES[$((i + 1))]=$k
fi
((i += 1))
done
((max -= 1))
done
}
#variables
TESTS_COUNT="${#TESTS[@]}"
#skip file (no regular file) counter
F_SKIPCNT=0
#
RES_FILES_CNT=0
#time size size_compressed block block_compressed speed ratio ratio_block
RES_SUM_time=()
RES_SUM_size=()
RES_SUM_size_compressed=()
RES_SUM_block=()
RES_SUM_block_compressed=()
RES_SUM_speed=()
RES_SUM_ratio=()
RES_SUM_ratio_block=()
for((i=0; i<${TESTS_COUNT}; i++)); do
RES_SUM_time+=( 0 )
RES_SUM_size+=( 0 )
RES_SUM_size_compressed+=( 0 )
RES_SUM_block+=( 0 )
RES_SUM_block_compressed+=( 0 )
RES_SUM_speed+=( '?' )
RES_SUM_ratio+=( '?' )
RES_SUM_ratio_block+=( '?' )
done
# Process function -----------------------
#need one arguments "full filename"
function processfile() {
srcfile="$1"
old_leave_file_size='999999999999'
old_leave_file_name=''
if [ "$VERBOSE" -eq "1" ]; then
echo -e "\nStart file: '$srcfile'"
fi
for((i=0; i<${TESTS_COUNT}; i++)); do
index=${TESTS[$i]}
if [ ! -f "$srcfile" ]; then
echo "'processfile' - file doesn't exist." >&2
exit 5
fi
fname="$( basename "$srcfile" )"
# ### --- hold tmp dir
cd "${TMP}/${TMPDIR}"
if [ "$?" -ne "0" ]; then
echo "CD ERROR!, 'cd \"${TMP}/${TMPDIR}\"' directory." >&2
exit 4
fi
cp "$srcfile" "./$fname"
if [ "$?" -ne "0" ]; then
echo "Copy ERROR!, 'cp \"$srcfile\"' \"./$fname\"" >&2
exit 4
fi
if [ "$VERBOSE" -eq "1" ]; then
echo "Comprimation cmd: '${TXTA[$index]}'"
echo -e "--------------------------------------------"
fi
cmdtmp="${CMDA[$index]}"
ext="${EXTA[$index]}"
ffname=${fname//"'"/"'\"'\"'"}
cmd="${cmdtmp//\[file\]/$ffname}"
if [ "$USE_TIME" -eq "1" ]; then
cmd="time -p $cmd"
fi
size="$( stat -c%s "${srcfile}" )"
if [ "$?" -ne "0" ]; then
echo "STAT ERROR!, 'stat -c%s \"${srcfile}\"' directory." >&2
exit 3
fi
start_t="$( gettime )"
# ### --- dangerous command
eval "$cmd"
ret_code=$?
if [ "$ret_code" -ne "0" ]; then
echo "COMPRIM ERROR!, CMD: '$cmd' ." >&2
exit 3
fi
stop_t="$( gettime )"
# ### --- hold tmp dir
cd "${TMP}/${TMPDIR}"
if [ "$?" -ne "0" ]; then
echo "CD ERROR!, 'cd \"${TMP}/${TMPDIR}\"' directory." >&2
exit 4
fi
size_compressed="$( stat -c%s "${fname}${ext}" )"
if [ "$?" -ne "0" ]; then
echo "STAT ERROR!, 'stat -c%s \"${fname}${ext}\"' directory." >&2
exit 3
fi
ttime="$( echo "scale=16; x=${stop_t} - ${start_t}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
speed="$( getspeed "${start_t}" "${stop_t}" "${size}" )"
ratio="$( getratio "${size}" "${size_compressed}" )"
ratio_block="$( getratio_block "${size}" "${size_compressed}" )"
blocks="$( echo "scale=0; (${size}/${SIZE_OF_BLOCK})+1" | $BCCMD )"
blocks_compressed="$( echo "scale=0; (${size_compressed}/${SIZE_OF_BLOCK})+1" | $BCCMD )"
RES_SUM_time[$i]="$( echo "scale=16; x=${RES_SUM_time[$i]} + ${ttime}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
RES_SUM_size[$i]="$( echo "${RES_SUM_size[$i]} + ${size}" | $BCCMD )"
RES_SUM_size_compressed[$i]="$( echo "${RES_SUM_size_compressed[$i]} + ${size_compressed}" | $BCCMD )"
RES_SUM_block[$i]="$( echo "${RES_SUM_block[$i]} + ${blocks}" | $BCCMD )"
RES_SUM_block_compressed[$i]="$( echo "${RES_SUM_block_compressed[$i]} + ${blocks_compressed}" | $BCCMD )"
if [ "${LEAVE_COMP}" -eq "2" ]; then
if [ "${old_leave_file_size}" -gt "${size_compressed}" ]; then
leaveit=1
if [ -n "${old_leave_file_name}" ]; then
# ### --- dangerous command
rm "${old_leave_file_name}"
if [ "$?" -ne "0" ]; then
echo "RM ERROR!, 'rm \"${old_leave_file_name}\"' directory." >&2
exit 4
fi
fi
old_leave_file_name="./${fname}${ext}"
old_leave_file_size="${size_compressed}"
else
leaveit=0
fi
elif [ "${LEAVE_COMP}" -eq "1" ]; then
leaveit=1
else
leaveit=0
fi
if [ "${leaveit}" -eq "0" ]; then
# ### --- dangerous command
rm "./${fname}${ext}"
if [ "$?" -ne "0" ]; then
echo "RM ERROR!, 'rm \"./${fname}${ext}\"' directory." >&2
exit 4
fi
fi
if [ -f "${fname}" ]; then
# ### --- dangerous command
rm "./${fname}"
if [ "$?" -ne "0" ]; then
echo "RM ERROR!, 'rm \"./${fname}\"' directory." >&2
exit 4
fi
fi
if [ "$VERBOSE" -eq "1" ]; then
echo " Time: $( format_time "${ttime}" )"
echo " Speed: $( format_speed "${speed}" )"
echo " Size: $( format_size "${size}" ); blocks: ${blocks}"
echo " Compressed: $( format_size "${size_compressed}" ); blocks: ${blocks_compressed}"
echo " Ratio: $( format_ratio "${ratio}" )"
echo "Ratio block: $( format_ratio "${ratio_block}" )"
echo -e "--------------------------------------------\n"
fi
done
# ### --- dangerous command
if [ -n "${TAR_FILENAME}" ]; then
tr_cmd=
if [ "${RES_FILES_CNT}" -eq "0" ]; then
tr_cmd="${TAR_CMD[0]}"
else
tr_cmd="${TAR_CMD[1]}"
fi
${tr_cmd} "${TAR_FILENAME}" "$srcfile" 2>/dev/null
if [ "$?" -ne "0" ]; then
echo "TAR ERROR!, ' ${tr_cmd} \"${TAR_FILENAME}\" \"$srcfile\"." >&2
exit 4
fi
fi
RES_FILES_CNT=$(( RES_FILES_CNT + 1 ))
if [ "$VERBOSE" -eq "1" ]; then
echo -e "End file: '$srcfile'"
fi
}
cd "${TMP}"
if [ "$?" -ne "0" ]; then
echo "CD ERROR!, 'cd ${TMP}' directory." >&2
exit 3
fi
mkdir "${TMPDIR}"
if [ "$?" -ne "0" ]; then
echo "MKDIR ERROR!, 'mkdir \"${TMPDIR}\"' directory." >&2
exit 3
fi
cd "${TMPDIR}"
if [ "$?" -ne "0" ]; then
echo "CD ERROR!, 'cd \"${TMPDIR}\"' directory." >&2
exit 3
fi
# ------------------ save --------------------
function save(){
if [ -n "${SAVE_FILENAME}" ]; then
echo "# BEGIN $1 comptest.bash utility save file" > "${SAVE_FILENAME}"
echo "# SIZE OF BLOCK:" >> "${SAVE_FILENAME}"
echo "${SIZE_OF_BLOCK}" >> "${SAVE_FILENAME}"
echo "# TEST COUNT:" >> "${SAVE_FILENAME}"
echo "${TESTS_COUNT}" >> "${SAVE_FILENAME}"
echo "# TESTS ARRAY:" >> "${SAVE_FILENAME}"
echo "${TESTS[@]}" >> "${SAVE_FILENAME}"
echo "# TESTS RESULT COUNTS:" >> "${SAVE_FILENAME}"
echo "${RES_FILES_CNT}" >> "${SAVE_FILENAME}"
echo "# NO REGULAR FILES COUNTS:" >> "${SAVE_FILENAME}"
echo "${F_SKIPCNT}" >> "${SAVE_FILENAME}"
echo "# SUM TIME ARRAY:" >> "${SAVE_FILENAME}"
echo "${RES_SUM_time[@]}" >> "${SAVE_FILENAME}"
echo "# SUM SIZE ARRAY:" >> "${SAVE_FILENAME}"
echo "${RES_SUM_size[@]}" >> "${SAVE_FILENAME}"
echo "# SUM SIZE COMPRESSED ARRAY:" >> "${SAVE_FILENAME}"
echo "${RES_SUM_size_compressed[@]}" >> "${SAVE_FILENAME}"
echo "# SUM BLOCK COUNT ARRAY:" >> "${SAVE_FILENAME}"
echo "${RES_SUM_block[@]}" >> "${SAVE_FILENAME}"
echo "# SUM COMPRESSED BLOCK COUNT ARRAY:" >> "${SAVE_FILENAME}"
echo "${RES_SUM_block_compressed[@]}" >> "${SAVE_FILENAME}"
echo "# END $1 comptest.bash utility save file" >> "${SAVE_FILENAME}"
fi
}
# --------------------------------------------
breakit=0
function control_c(){
# echo "Interupting..."
if [ "${breakit}" -gt "0" ]; then
exit 3
fi
breakit=1
}
# ----- trap -------
trap control_c INT
#process all files -----------------------
if [ "${INPUTTYPE}" -eq "-2" ]; then
echo "Started -i, stdin file names"
while read file; do
if [ -f "$file" ]; then
processfile "$file"
else
F_SKIPCNT=$(( F_SKIPCNT + 1 ))
if [ "$VERBOSE" -eq "1" ]; then
echo "The file '$1' is not regular file"
fi
fi
if [ "${breakit}" -ne "0" ]; then
echo "Interupted…"
save 'interupted'
exit 3
else
save 'in progess'
fi
done
elif [ "${INPUTTYPE}" -eq "-1" ]; then
echo "Started -f, file names as parametrs"
while [ "$#" != "0" ]; do
if [ -f "$1" ]; then
processfile "$1"
else
F_SKIPCNT=$(( F_SKIPCNT + 1 ))
if [ "$VERBOSE" -eq "1" ]; then
echo "The file '$1' is not regular file"
fi
fi
if [ "${breakit}" -ne "0" ]; then
echo "Interupted…"
save 'interupted'
exit 3
else
save 'in progess'
fi
shift
done
elif [ "${INPUTTYPE}" -eq "-3" ]; then
echo "Started -o, read saved data"
i='0'
while read line; do
if [ "$i" -eq "2" ]; then
SIZE_OF_BLOCK="${line}"
elif [ "$i" -eq "4" ]; then
TESTS_COUNT="${line}"
elif [ "$i" -eq "6" ]; then
TESTS=( ${line} )
elif [ "$i" -eq "8" ]; then
RES_FILES_CNT="${line}"
elif [ "$i" -eq "10" ]; then
F_SKIPCNT="${line}"
elif [ "$i" -eq "12" ]; then
RES_SUM_time=( ${line} )
elif [ "$i" -eq "14" ]; then
RES_SUM_size=( ${line} )
elif [ "$i" -eq "16" ]; then
RES_SUM_size_compressed=( ${line} )
elif [ "$i" -eq "18" ]; then
RES_SUM_block=( ${line} )
elif [ "$i" -eq "20" ]; then
RES_SUM_block_compressed=( ${line} )
fi
i=$((i=i+1))
done < "${OPEN_FILENAME}"
RES_SUM_speed=()
RES_SUM_ratio=()
RES_SUM_ratio_block=()
for((i=0; i<${TESTS_COUNT}; i++)); do
RES_SUM_speed+=( '?' )
RES_SUM_ratio+=( '?' )
RES_SUM_ratio_block+=( '?' )
done
elif [ "${INPUTTYPE}" -eq "-4" ]; then
echo "Started -d, tar directory"
mkdir "${TMP}/${TMPDIR}/${TAR_TMP_DIR}"
if [ "$?" -ne "0" ]; then
echo "MKDIR ERROR!, 'mkdir \"${TMP}/${TMPDIR}/${TAR_TMP_DIR}\"' directory." >&2
exit 3
fi
while read dir; do
if [ -d "$dir" ]; then
drname="$( basename "$dir" )"
# ### --- hold tmp dir
cd "${TMP}/${TMPDIR}"
if [ "$?" -ne "0" ]; then
echo "CD ERROR!, 'cd \"${TMP}/${TMPDIR}\"' directory." >&2
exit 4
fi
tr_cmd="${TAR_CMD[0]}"
# ### --- dangerous command
${tr_cmd} "${TAR_TMP_DIR}/${drname}.tar" "$dir" 2>/dev/null
if [ "$?" -ne "0" ]; then
echo "TAR DIRECTORY ERROR!, '${tr_cmd} \"${TAR_TMP_DIR}/${drname}.tar\" \"$dir\"'." >&2
exit 3
fi
processfile "${TMP}/${TMPDIR}/${TAR_TMP_DIR}/${drname}.tar"
# ### --- hold tmp dir
cd "${TMP}/${TMPDIR}"
if [ "$?" -ne "0" ]; then
echo "CD ERROR!, 'cd \"${TMP}/${TMPDIR}\"' directory." >&2
exit 4
fi
# ### --- dangerous command
rm "./${TAR_TMP_DIR}/${drname}.tar"
if [ "$?" -ne "0" ]; then
echo "RM ERROR!, 'rm \"./${TAR_TMP_DIR}/${drname}.tar}\"'." >&2
exit 3
fi
else
F_SKIPCNT=$(( F_SKIPCNT + 1 ))
if [ "$VERBOSE" -eq "1" ]; then
echo "The file '$1' is not directory"
fi
fi
if [ "${breakit}" -ne "0" ]; then
echo "Interupted…"
save 'interupted'
exit 3
else
save 'in progess'
fi
shift
done
rmdir "${TMP}/${TMPDIR}/${TAR_TMP_DIR}"
if [ "$?" -ne "0" ]; then
echo "RMDIR ERROR!, 'rmdir \"${TMP}/${TMPDIR}/${TAR_TMP_DIR}\"' directory." >&2
exit 3
fi
else
echo "Type of input mismatch error." >&2
fi
# ------------------------------------------
# ------------------ save it -----------------
if [ "${breakit}" -eq "0" ]; then
save 'finished'
fi
# --------------------------------------------
#report -----------------------
EVOL_REF_PR=0.25
EVOL_LOWER_PR=0.05
EVOL_SAME_PR=0.005
EVOL_CHR=( '==' ' =' ' v' 'vv' '&&' )
CHR_LOW=' v'
CHR_LOW2='vv'
EVOL_UNLIM='99999999999999999999'
EVOL_LAST_VALUE="-${EVOL_UNLIM}"
EVOL_RES=''
EVOL_SIDE=0
function start_evolution() {
if [ "$1" -eq "0" ]; then
EVOL_LAST_VALUE="${EVOL_UNLIM}"
else
EVOL_LAST_VALUE="-${EVOL_UNLIM}"
fi
EVOL_SIDE=0
}
function evolution() {
if [ "$2" -eq "0" ]; then
r="$( echo "scale=2; x=${EVOL_LAST_VALUE} - $1; scale=0; r=4; if(x < (${EVOL_REF_PR}*${EVOL_LAST_VALUE})) r-=1; if(x < (${EVOL_LOWER_PR}*${EVOL_LAST_VALUE})) r-=1; if(x < (${EVOL_SAME_PR}*${EVOL_LAST_VALUE})) r-=1; if(x == 0) r=0; r" | $BCCMD )"
else
r="$( echo "scale=2; x=(${EVOL_LAST_VALUE} - $1)* -1; scale=0; r=4; if(x < (${EVOL_REF_PR}*${EVOL_LAST_VALUE})) r-=1; if(x < (${EVOL_LOWER_PR}*${EVOL_LAST_VALUE})) r-=1; if(x < (${EVOL_SAME_PR}*${EVOL_LAST_VALUE})) r-=1; if(x == 0) r=0; r" | $BCCMD )"
fi
if [ "$r" -eq "4" ]; then
EVOL_LAST_VALUE="$1"
if [ "${EVOL_SIDE}" -eq "0" ]; then
EVOL_SIDE=1
else
EVOL_SIDE=0
fi
fi
if [ "${EVOL_SIDE}" -eq "0" ]; then
EVOL_RES="|${EVOL_CHR[$r]} "
else
EVOL_RES=" ${EVOL_CHR[$r]}|"
fi
}
function width_itselfl(){
x="$1"
while [ ${#x} -lt "$2" ] ; do
x=" $x"
done
echo "$x"
}
function width_itselfr(){
x="$1"
while [ ${#x} -lt "$2" ]; do
x="$x "
done
echo "$x"
}
function gauge(){
x=""
if [ $# -gt "2" ]; then
if [ "$3" -gt "0" ]; then
x="<<<<<${line:3}"
width_itselfr "$x" "${2}"
else
while [ ${#x} -lt "$1" ]; do
x="$x#"
done
x="${x:0:$(($2-5))}>>>>>"
x="${GRAPH_POINT/\[letter\]/${x}}"
width_itselfr "$x" "$((${2}+${GRAPH_POINT_L}))"
fi
else
while [ ${#x} -lt "$1" ]; do
x="$x#"
done
x="${GRAPH_POINT/\[letter\]/${x}}"
width_itselfr "$x" "$((${2}+${GRAPH_POINT_L}))"
fi
}
function toaverage(){
if [ "$1" -eq "-1" ]; then
echo '-| '
else
echo ' |+'
fi
}
function toweightspeed(){
if [ "$1" -eq "-1" ]; then
echo 'slow| '
else
echo ' |fast'
fi
}
function toweightratio(){
if [ "$1" -eq "-1" ]; then
echo 'bad| '
else
echo ' |good'
fi
}
function nook(){
if [ "$1" -eq "1" ]; then
echo 'no| '
else
echo ' |OK'
fi
}
# ------ compute necessary values ----------
SUM_time='0'
SUM_size='0'
SUM_size_compressed='0'
TEST_INFO=()
TEST_SHORT_INFO=()
AVG_SPEED='0'
AVG_RATIO='0'
AVG_RATIO_BLOCK='0'
MIN_SPEED='99999999999999999999'
MIN_RATIO='99999999999999999999'
MIN_RATIO_BLOCK='99999999999999999999'
MAX_SPEED='0'
MAX_RATIO='0'
MAX_RATIO_BLOCK='0'
NAME_WIDTH=20
for((i=0; i<${TESTS_COUNT}; i++)); do
RES_SUM_speed[$i]="$( echo "scale=12; x=${RES_SUM_size[$i]}/${RES_SUM_time[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
AVG_SPEED="$( echo "scale=12; x=${AVG_SPEED} + ${RES_SUM_speed[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
MIN_SPEED="$( echo "scale=12; x=${RES_SUM_speed[$i]}; if(${MIN_SPEED}<x) x=${MIN_SPEED}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
MAX_SPEED="$( echo "scale=12; x=${RES_SUM_speed[$i]}; if(${MAX_SPEED}>x) x=${MAX_SPEED}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
RES_SUM_ratio[$i]="$( echo "scale=9; x=${RES_SUM_size_compressed[$i]}/${RES_SUM_size[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
AVG_RATIO="$( echo "scale=12; x=${AVG_RATIO} + ${RES_SUM_ratio[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
MIN_RATIO="$( echo "scale=12; x=${RES_SUM_ratio[$i]}; if(${MIN_RATIO}<x) x=${MIN_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
MAX_RATIO="$( echo "scale=12; x=${RES_SUM_ratio[$i]}; if(${MAX_RATIO}>x) x=${MAX_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
RES_SUM_ratio_block[$i]="$( echo "scale=9; x=${RES_SUM_block_compressed[$i]}/${RES_SUM_block[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
AVG_RATIO_BLOCK="$( echo "scale=12; x=${AVG_RATIO_BLOCK} + ${RES_SUM_ratio_block[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
MIN_RATIO_BLOCK="$( echo "scale=12; x=${RES_SUM_ratio_block[$i]}; if(${MIN_RATIO_BLOCK}<x) x=${MIN_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
MAX_RATIO_BLOCK="$( echo "scale=12; x=${RES_SUM_ratio_block[$i]}; if(${MAX_RATIO_BLOCK}>x) x=${MAX_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
SUM_time="$( echo "scale=12; x=${SUM_time} + ${RES_SUM_time[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
SUM_size="$( echo "scale=12; x=${SUM_size} + ${RES_SUM_size[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
SUM_size_compressed="$( echo "scale=12; x=${SUM_size_compressed} + ${RES_SUM_size_compressed[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
#create info
testi="${TESTS[$i]}"
#do not change '20' !
TEST_SHORT_INFO+=( "[ $(width_itselfr "${TXTA[$testi]}" ${NAME_WIDTH}) ]" )
str="${TEST_SHORT_INFO[$i]} S: $(width_itselfl "$( format_speed "${RES_SUM_speed[$i]}" 1 )" 14 ); R: $(width_itselfl "$( format_ratio "${RES_SUM_ratio[$i]}" 1 )" 8 ); RB: $(width_itselfl "$( format_ratio "${RES_SUM_ratio_block[$i]}" 1 )" 8 )"
TEST_INFO+=( "${str}" )
done
AVG_SPEED="$( echo "scale=9; x=${AVG_SPEED} / ${TESTS_COUNT}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
AVG_RATIO="$( echo "scale=9; x=${AVG_RATIO} / ${TESTS_COUNT}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
AVG_RATIO_BLOCK="$( echo "scale=9; x=${AVG_RATIO_BLOCK} / ${TESTS_COUNT}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
# --- sort results -------------------------
BUBBLE_DESC=0
bubble_sort "${RES_SUM_speed[@]}"
speed_index=(${BUBBLE_RES[@]})
BUBBLE_DESC=1
bubble_sort "${RES_SUM_ratio[@]}"
ratio_index=(${BUBBLE_RES[@]})
BUBBLE_DESC=1
bubble_sort "${RES_SUM_ratio_block[@]}"
ratio_index_block=(${BUBBLE_RES[@]})
#echo "${speed_index[@]}"
#echo "${ratio_index[@]}"
#echo "${ratio_index_block[@]}"
#echo "${RES_SUM_speed[@]}"
#echo "${RES_SUM_size[@]}"
#echo "${RES_SUM_size_compressed[@]}"
#echo "${RES_SUM_block[@]}"
#echo "${RES_SUM_block_compressed[@]}"
#echo "${RES_SUM_speed[@]}"
#echo "${RES_SUM_ratio[@]}"
#echo "${RES_SUM_ratio_block[@]}"
echo ''
echo '# SUMARRY ####################################################################'
echo "# Tested files: $(echo "x=${RES_FILES_CNT}; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER6INT}" | $BCCMD )"
echo "# Skipped no-regular files: $(echo "x=${F_SKIPCNT}; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER6INT}" | $BCCMD )"
echo "# Tested method count: $(echo "x=${TESTS_COUNT}; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER6INT}" | $BCCMD )"
echo '#-----------------------------------------------------------------------------'
echo "# All compression time: $( format_time "${SUM_time}" )"
echo "# All tested files size: $( format_size "${RES_SUM_size[0]}" ); blocks: ${RES_SUM_block[0]}"
echo "# All tested files blocks: $(echo "x=${RES_SUM_block[0]}; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER6INT}" | $BCCMD )"
block_size="$( echo "scale=9; x=${RES_SUM_block[0]}*(${SIZE_OF_BLOCK} + ${ADD_SIZE_TO_BLOCK}); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
echo "# All tested files block size: $( format_size "${block_size}" )"
echo '#-----------------------------------------------------------------------------'
waitforkey
echo "# Average speed: $(width_itselfl "$( format_speed "${AVG_SPEED}" 0 )" 18)"
echo "# Average compress ratio: $(width_itselfl "$( format_ratio "${AVG_RATIO}" 1 )" 12)"
echo "# Average compress ratio block: $(width_itselfl "$( format_ratio "${AVG_RATIO_BLOCK}" 1 )" 12)"
echo '#-----------------------------------------------------------------------------'
echo "# Minimum speed: $(width_itselfl "$( format_speed "${MIN_SPEED}" 0 )" 18)"
echo "# Minimum compress ratio: $(width_itselfl "$( format_ratio "${MIN_RATIO}" 1 )" 12) (the best)"
echo "# Minimum compress ratio block: $(width_itselfl "$( format_ratio "${MIN_RATIO_BLOCK}" 1 )" 12) (the best)"
echo '#-----------------------------------------------------------------------------'
echo "# Maximum speed: $(width_itselfl "$( format_speed "${MAX_SPEED}" 0 )" 18)"
echo "# Maximum compress ratio: $(width_itselfl "$( format_ratio "${MAX_RATIO}" 1 )" 12) (the worst)"
echo "# Maximum compress ratio block: $(width_itselfl "$( format_ratio "${MAX_RATIO_BLOCK}" 1 )" 12) (the worst)"
echo '#-----------------------------------------------------------------------------'
echo "# All uncompressed read: $( format_size "${SUM_size}" )"
echo "# All compressed writes: $( format_size "${SUM_size_compressed}" )"
echo '##############################################################################'
waitforkey
GAUGEWIDTH=25
echo ''
echo '# ORDER BY SPEED ##################^^^^^^^####################################'
cnt="${#speed_index[@]}"
start_evolution 0
for((i=0; i<${cnt}; i++)); do
index="${speed_index[$i]}"
evolution "${RES_SUM_speed[$index]}" 0
echo "# ${EVOL_RES} ${TEST_INFO[$index]}"
done
echo '#-----------------------------------------------------------------------------'
waitforkey
int="$( echo "scale=12; x=${GAUGEWIDTH}/(${MAX_SPEED} - ${MIN_SPEED}); if(x<0.00000000001) x=0.00000000001; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
tmp_w="$( echo "scale=12; x=${REPORT_SPEED_W}*(${MAX_SPEED} - ${MIN_SPEED}) + ${MIN_SPEED}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
ww="$( echo "scale=12; x=${GAUGEWIDTH}*${REPORT_SPEED_W}; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
rr="$( echo "scale=12; x=${REPORT_SPEED_W}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
a="$( echo "scale=12; x=-1; if(${tmp_w}>${AVG_SPEED}) x=1; x" | $BCCMD )"
w="$( echo "scale=12; x=${int}*(${AVG_SPEED} - ${MIN_SPEED}); ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
r="$( echo "scale=12; x=${w}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
s="$( echo "scale=12; x=-1; if(${AVG_SPEED}>${tmp_w}) x=1; x" | $BCCMD )"
echo -e "# [ $(width_itselfr "Average speed" ${NAME_WIDTH} ) ] $(gauge "$w" "${GAUGEWIDTH}") $(width_itselfl $r 3) % &|& $(toweightspeed "$s")"
echo -e "# [ $(width_itselfr "Speed alimit -s $(echo "scale=3; x=${REPORT_SPEED_W}; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD)" ${NAME_WIDTH} ) ] $(gauge "$ww" "${GAUGEWIDTH}") $(width_itselfl $rr 3) % $(toaverage "$a") &|&"
echo '# -------------------- |-------------------------| | | '
for((i=0; i<${cnt}; i++)); do
index="${speed_index[$i]}"
w="$( echo "scale=12; x=${int}*(${RES_SUM_speed[$index]} - ${MIN_SPEED}); ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
r="$( echo "scale=12; x=${w}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
a="$( echo "scale=12; x=-1; if(${RES_SUM_speed[$index]}>${AVG_SPEED}) x=1; x" | $BCCMD )"
s="$( echo "scale=12; x=-1; if(${RES_SUM_speed[$index]}>${tmp_w}) x=1; x" | $BCCMD )"
echo -e "# ${TEST_SHORT_INFO[$index]} $(gauge "$w" "${GAUGEWIDTH}") $(width_itselfl $r 3) % $(toaverage "$a") $(toweightspeed "$s")"
done
echo '##############################################################################'
waitforkey
echo ''
echo '# ORDER BY COMPRESSED FILE SIZE #######################vvvvvv#################'
cnt="${#ratio_index[@]}"
start_evolution 1
for((i=0; i<${cnt}; i++)); do
index="${ratio_index[$i]}"
evolution "${RES_SUM_ratio[$index]}" 1
echo "# ${EVOL_RES} ${TEST_INFO[$index]}"
done
echo '#-----------------------------------------------------------------------------'
waitforkey
min="$( echo "scale=9; x=1 - ${MAX_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
max="$( echo "scale=9; x=1 - ${MIN_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
avg="$( echo "scale=9; x=1 - ${AVG_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
int="$( echo "scale=9; x=${GAUGEWIDTH}/(${max} - ${min}); if(x<0.00000001) x=0.00000001; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
tmp_w="$( echo "scale=9; x=(${REPORT_RATIO_W}*(${max} - ${min}) + ${min}); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
ww="$( echo "scale=9; x=${GAUGEWIDTH}*${REPORT_RATIO_W}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
rr="$( echo "scale=9; x=${REPORT_RATIO_W}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
a="$( echo "scale=9; x=-1; if(${tmp_w}>(${avg})) x=1; x" | $BCCMD )"
w="$( echo "scale=9; x=${int}*(${avg} - ${min}); ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
r="$( echo "scale=9; x=${w}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
s="$( echo "scale=9; x=-1; if((${avg})>${tmp_w}) x=1; x" | $BCCMD )"
r_min="$( echo "scale=6; x=((${max} - ${min})/${GAUGEWIDTH}); if(x<0.000001) x=0.000001; x=((1 - ${REPORT_RATIO_MIN}) - ${min})/x; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
if [ "${r_min}" -lt "0" ]; then
g_lim="$(gauge "0" "${GAUGEWIDTH}" "1")"
g_rr=' <<<<'
elif [ "${r_min}" -gt "${GAUGEWIDTH}" ]; then
g_lim="$(gauge "${GAUGEWIDTH}" "${GAUGEWIDTH}" "0")"
g_rr=' >>>>'
else
g_lim="$(gauge "$r_min" "${GAUGEWIDTH}")"
g_rr="$( width_itselfl "$( echo "scale=6; x=${r_min}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" 3 ) %"
fi
echo -e "# [ $(width_itselfr "Compress min -R $(echo "scale=3; x=${REPORT_RATIO_MIN}; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD)" ${NAME_WIDTH} ) ] ${g_lim} ${g_rr} | | &|&"
yesno=$(echo "${AVG_RATIO}>=${REPORT_RATIO_MIN}" | $BCCMD)
echo -e "# [ $(width_itselfr "Average ratio" ${NAME_WIDTH} ) ] $(gauge "$w" "${GAUGEWIDTH}") $(width_itselfl $r 3) % &|& $(toweightratio "$s") $(nook "$yesno")"
echo -e "# [ $(width_itselfr "Ratio alimit -r $(echo "scale=3; x=${REPORT_RATIO_W}; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD)" ${NAME_WIDTH} ) ] $(gauge "$ww" "${GAUGEWIDTH}") $(width_itselfl $rr 3) % $(toaverage "$a") &|& |"
echo '# -------------------- |-------------------------| | | |'
for((i=0; i<${cnt}; i++)); do
index="${ratio_index[$i]}"
yesno="$(echo "(${RES_SUM_ratio[$index]})>=${REPORT_RATIO_MIN}" | $BCCMD)"
w="$( echo "scale=9; x=${int}*((1 - ${RES_SUM_ratio[$index]}) - ${min}); ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
r="$( echo "scale=9; x=${w}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
a="$( echo "scale=9; x=-1; if((1 - ${RES_SUM_ratio[$index]}>${avg})) x=1; x" | $BCCMD )"
s="$( echo "scale=9; x=-1; if((1 - ${RES_SUM_ratio[$index]}>${tmp_w})) x=1; x" | $BCCMD )"
echo -e "# ${TEST_SHORT_INFO[$index]} $(gauge "$w" "${GAUGEWIDTH}") $(width_itselfl $r 3) % $(toaverage "$a") $(toweightratio "$s") $(nook "$yesno")"
done
echo '##############################################################################'
waitforkey
echo ''
echo '# ORDER BY COMPRESSED FILE BLOCK COUNT ##############################vvvvvv###'
cnt="${#ratio_index_block[@]}"
start_evolution 1
for((i=0; i<${cnt}; i++)); do
index="${ratio_index_block[$i]}"
evolution "${RES_SUM_ratio_block[$index]}" 1
echo "# ${EVOL_RES} ${TEST_INFO[$index]}"
done
echo '#-----------------------------------------------------------------------------'
waitforkey
min="$( echo "scale=9; x=1 - ${MAX_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
max="$( echo "scale=9; x=1 - ${MIN_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
avg="$( echo "scale=9; x=1 - ${AVG_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
int="$( echo "scale=9; y=${max} - ${min}; if(y < 0.00000001) y=0.00000001; x=${GAUGEWIDTH}/y; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
tmp_w="$( echo "scale=9; x=(${REPORT_RATIO_W}*(${max} - ${min}) + ${min}); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
ww="$( echo "scale=9; x=${GAUGEWIDTH}*${REPORT_RATIO_W}; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
rr="$( echo "scale=9; x=${REPORT_RATIO_W}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
a="$( echo "scale=9; x=-1; if(${tmp_w}>(${avg})) x=1; x" | $BCCMD )"
w="$( echo "scale=9; x=${int}*(${avg} - ${min}); ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
r="$( echo "scale=9; x=${w}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
s="$( echo "scale=9; x=-1; if((${avg})>${tmp_w}) x=1; x" | $BCCMD )"
r_min="$( echo "scale=6; x=((${max} - ${min})/${GAUGEWIDTH}); if(x<0.000001) x=0.000001; x=((1 - ${REPORT_RATIO_MIN}) - ${min})/x; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
if [ "${r_min}" -lt "0" ]; then
g_lim="$(gauge "0" "${GAUGEWIDTH}" "1")"
g_rr=' <<<<'
elif [ "${r_min}" -gt "${GAUGEWIDTH}" ]; then
g_lim="$(gauge "${GAUGEWIDTH}" "${GAUGEWIDTH}" "0")"
g_rr=' >>>>'
else
g_lim="$(gauge "$r_min" "${GAUGEWIDTH}")"
g_rr="$( width_itselfl "$( echo "scale=6; x=${r_min}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" 3 ) %"
fi
echo -e "# [ $(width_itselfr "Compress min -R $(echo "scale=3; x=${REPORT_RATIO_MIN}; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD)" ${NAME_WIDTH} ) ] ${g_lim} ${g_rr} | | &|&"
yesno=$(echo "${AVG_RATIO_BLOCK}>=${REPORT_RATIO_MIN}" | $BCCMD)
echo -e "# [ $(width_itselfr "Average ratio block" ${NAME_WIDTH} ) ] $(gauge "$w" "${GAUGEWIDTH}") $(width_itselfl $r 3) % &|& $(toweightratio "$s") |"
echo -e "# [ $(width_itselfr "Ratio limit -r $(echo "scale=3; x=${REPORT_RATIO_W}; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD)" ${NAME_WIDTH} ) ] $(gauge "$ww" "${GAUGEWIDTH}") $(width_itselfl $rr 3) % $(toaverage "$a") &|& |"
echo '# -------------------- |-------------------------| | | |'
for((i=0; i<${cnt}; i++)); do
index="${ratio_index_block[$i]}"
yesno="$(echo "(${RES_SUM_ratio_block[$index]})>=${REPORT_RATIO_MIN}" | $BCCMD)"
w="$( echo "scale=9; x=${int}*((1 - ${RES_SUM_ratio_block[$index]}) - ${min}); ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
r="$( echo "scale=9; x=${w}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )"
a="$( echo "scale=9; x=-1; if((1 - ${RES_SUM_ratio_block[$index]}>${avg})) x=1; x" | $BCCMD )"
s="$( echo "scale=9; x=-1; if((1 - ${RES_SUM_ratio_block[$index]}>${tmp_w})) x=1; x" | $BCCMD )"
echo -e "# ${TEST_SHORT_INFO[$index]} $(gauge "$w" "${GAUGEWIDTH}") $(width_itselfl $r 3) % $(toaverage "$a") $(toweightratio "$s") $(nook "$yesno")"
done
echo '##############################################################################'
echo ''
if [ "$STOPIT" -eq "1" ]; then
echo "Next two wait for any key without message will be required."
fi
waitforkey
# ----- graph data -------------------------------------
grdata=()
grdata+=( '# | |' )
grdata+=( '# ^| |' )
grdata+=( '# ^| |' )
grdata+=( '# ^| |' )
grdata+=( '# | |' )
grdata+=( '# f| |' )
grdata+=( '# a| |' )
grdata+=( '# s| |' )
grdata+=( '# t| |' )
grdata+=( '# | |' )
grdata+=( '# s| |' )
grdata+=( '# p| |' )
grdata+=( '# e| |' )
grdata+=( '# e| |' )
grdata+=( '# d| |' )
grdata+=( '# | |' )
grdata+=( '# s| |' )
grdata+=( '# l| |' )
grdata+=( '# o| |' )
grdata+=( '# w| |' )
grdata+=( '# | |' )
grdata+=( '# v| |' )
grdata+=( '# v| |' )
grdata+=( '# v| |' )
grdata+=( '# | |' )
echo '# QUADRANT GRAPH RATIO (by filesize) #########################################'
min="$( echo "scale=9; x=1 - ${MAX_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
max="$( echo "scale=9; x=1 - ${MIN_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
min_block="$( echo "scale=9; x=1 - ${MAX_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
max_block="$( echo "scale=9; x=1 - ${MIN_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
mingr_h="$(width_itselfl "$(format_ratio "${MAX_RATIO}" 1 )" 8)"
maxgr_h="$(width_itselfl "$(format_ratio "${MIN_RATIO}" 1 )" 8)"
TESTSID='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghuiklmnopqrstuvwxyz@#$%^&*()";.,'
MIDspeed="$( echo "scale=12; x=${MIN_SPEED}+(${MAX_SPEED} - ${MIN_SPEED} / 2); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
MIDratio="$( echo "scale=12; x=${MIN_RATIO}+(${MAX_RATIO} - ${MIN_RATIO} / 2); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
MIDratio_block="$( echo "scale=12; x=${MIN_RATIO_BLOCK}+(${MIN_RATIO_BLOCK} - ${MIN_RATIO_BLOCK} / 2); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
SPEED_R="$( echo "scale=9; x=${MAX_SPEED} - ${MIN_SPEED}; if(x<0.001) x=0.001; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
GR_POS=()
GR_POS_block=()
GR_val=()
GR_val_block=()
GR_W=72
GR_WM=5
GR_H=24
#-------- compute arrays for quadrant graphs
for((i=0; i<${TESTS_COUNT}; i++)); do
TESTSID_h="$( echo "scale=6; x=(${MAX_SPEED} - ${MIN_SPEED})/${GR_H}; if(x<0.000001) x=0.000001; x=(${RES_SUM_speed[$i]} - ${MIN_SPEED})/x; if(x < 0) x=0; y=${GR_H}; if(x > y) x=y; x=${GR_H}-x; x" | $BCCMD )"
TESTSID_v="$( echo "scale=6; x=((${max} - ${min})/${GR_W}); if(x<0.000001) x=0.000001; x=((1 - ${RES_SUM_ratio[$i]}) - ${min})/x; x=${GR_W}-x; if(x < 0) x=0; if(x > ${GR_W}) x=${GR_W}; x=${GR_W}-x + ${GR_WM}; x" | $BCCMD )"
w="$( echo "scale=6; x=(${GR_H} - ${TESTSID_h})*(${TESTSID_v}*(${GR_H}/${GR_W})); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
TESTSID_h="$( echo "x=${TESTSID_h}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
TESTSID_v="$( echo "x=${TESTSID_v}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
GR_POS+=( "${TESTSID_h}" "${TESTSID_v}" "${TEST_INFO[$i]}" '?' )
GR_val+=( "$w" )
TESTSID_h="$( echo "scale=6; x=(${MAX_SPEED} - ${MIN_SPEED})/${GR_H}; if(x<0.000001) x=0.000001; x=(${RES_SUM_speed[$i]} - ${MIN_SPEED})/x; if(x < 0) x=0; y=${GR_H}; if(x > y) x=y; x=${GR_H}-x; x" | $BCCMD )"
TESTSID_v="$( echo "scale=6; x=((${max_block} - ${min_block})/${GR_W}); if(x<0.000001) x=0.000001; x=((1 - ${RES_SUM_ratio_block[$i]}) - ${min_block})/x; x=${GR_W}-x; if(x < 0) x=0; if(x > ${GR_W}) x=${GR_W}; x=${GR_W}-x + ${GR_WM}; x" | $BCCMD )"
w="$( echo "scale=6; x=(${GR_H} - ${TESTSID_h})*(${TESTSID_v}*(${GR_H}/${GR_W})); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )"
TESTSID_h="$( echo "x=${TESTSID_h}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
TESTSID_v="$( echo "x=${TESTSID_v}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
GR_POS_block+=( "${TESTSID_h}" "${TESTSID_v}" "${TEST_INFO[$i]}" '?' )
GR_val_block+=( "$w" )
done
BUBBLE_DESC=0
bubble_sort "${GR_val[@]}"
GR_index=(${BUBBLE_RES[@]})
bubble_sort "${GR_val_block[@]}"
GR_index_block=(${BUBBLE_RES[@]})
TESTSID_i='0'
cnt=${#GR_index[@]}
for((i=0; i<${cnt}; i++)); do
index=$((${GR_index[$i]}*4))
TESTSID_h=${GR_POS[$(($index))]}
TESTSID_v=${GR_POS[$(($index+1))]}
ch=''
for((j=0; j<${i}; j++)); do
index_j=$((${GR_index[$j]}*4))
TESTSID_h2=${GR_POS[$(($index_j))]}
TESTSID_v2=${GR_POS[$(($index_j+1))]}
if [ "$TESTSID_h" -eq "$TESTSID_h2" -a "$TESTSID_v" -eq "$TESTSID_v2" ]; then
k="$(($index_j+3))"
ch="${GR_POS[$k]}"
fi
done
if [ -z "${ch}" ]; then
TESTSID_i="$((${TESTSID_i}+1))"
ch="${TESTSID:${TESTSID_i}:1}"
fi
k="$(($index+3))"
GR_POS[$k]="$ch"
done
TESTSID_i='0'
cnt=${#GR_index_block[@]}
for((i=0; i<${cnt}; i++)); do
index=$((${GR_index_block[$i]}*4))
TESTSID_h=${GR_POS_block[$(($index))]}
TESTSID_v=${GR_POS_block[$(($index+1))]}
ch=''
for((j=0; j<${i}; j++)); do
index_j=$((${GR_index_block[$j]}*4))
TESTSID_h2=${GR_POS_block[$(($index_j))]}
TESTSID_v2=${GR_POS_block[$(($index_j+1))]}
if [ "$TESTSID_h" -eq "$TESTSID_h2" -a "$TESTSID_v" -eq "$TESTSID_v2" ]; then
k="$(($index_j+3))"
ch="${GR_POS_block[$k]}"
fi
done
if [ -z "${ch}" ]; then
TESTSID_i="$((${TESTSID_i}+1))"
ch="${TESTSID:${TESTSID_i}:1}"
fi
k="$(($index+3))"
GR_POS_block[$k]="$ch"
done
grh="# <<< bad ${mingr_h} compression ratio ${maxgr_h} good >>> "
grh1="$grh"
waitforkey2
H_SPLIT="$( echo "scale=6; x=(1 - ${REPORT_SPEED_W})*${GR_H}; if(x < 0) x=0; y=${GR_H}; if(x > y) x=y; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
V_SPLIT="$( echo "scale=6; x=${REPORT_RATIO_W}*${GR_W}; y=${GR_W}; if(x < 0) x=0; if(x > ${GR_W}) x=${GR_W}; x=x + ${GR_WM}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
V_MIN="$( echo "scale=6; x=((${MAX_RATIO} - ${MIN_RATIO})/${GR_W}); if(x<0.000001) x=0.000001; x=(${REPORT_RATIO_MIN} - ${MIN_RATIO})/x; x=${GR_W}-x; y=${GR_W}+1; if(x < -1) x=-1; if(x > y) x=y; x=x + ${GR_WM}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
H_MIN="$( echo "scale=12; x=((${MAX_SPEED} - ${MIN_SPEED})/${GR_H}); if(x<0.000001) x=0.000001; x=(${REPORT_SPEED_MIN} - ${MIN_SPEED})/x; y=${GR_H}+1; if(x < -1) x=-1; if(x > y) x=y; x=${GR_H}-x; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD)"
#print graph
if [ "${V_MIN}" -eq "${V_SPLIT}" -o "${V_MIN}" -eq "$((${GR_WM}-1))" -o "${V_MIN}" -eq "$((${GR_W} + ${GR_WM}+1))" ]; then
pair=0
else
pair=2
fi
data=("${grdata[@]}")
#----- graph background with limits -----------------
function graphlines(){
if [ "${H_MIN}" -ge "${GR_H}" ]; then
grh="${grh// / ~~~~~~~ }"
elif [ "${H_MIN}" -le "-1" ]; then
grh1="${grh1// / ~~~~~~~ }"
else
line="${data[${H_MIN}]}"
line="${line// /~~~~~~~}"
line="${line// /~~~}"
data[${H_MIN}]="${line}"
fi
cnt=${#grdata[@]}
for((i=0; i<${cnt}; i++)); do
line="${data[$i]}"
if [ "$i" -eq "${H_SPLIT}" ]; then
if [ "${H_MIN}" -eq "${H_SPLIT}" ]; then
line="${line//~~~~~~~~/-~-~-~-~}"
line="${line//~~~~/-~-~}"
line="${line//~~/~-}"
else
line="${line// /-------}"
line="${line// /---}"
line="${line:0:$((${V_SPLIT}-1))}|${line:${V_SPLIT}}"
line="${line:0:$((${V_SPLIT}-1))}+${line:${V_SPLIT}}"
fi
else
line="${line:0:$((${V_SPLIT}-1))}|${line:${V_SPLIT}}"
fi
if [ "${pair}" -lt "2" ]; then
if [ "${pair}" -eq "0" ]; then
pair=1
line="${line:0:$((${V_MIN}-1))}:${line:${V_MIN}}"
else
pair=0
fi
else
line="${line:0:$((${V_MIN}-1))}:${line:${V_MIN}}"
fi
data[$i]="${line}"
done
}
graphlines
echo "$grh"
cnt=${#GR_index[@]}
for((i=0; i<${cnt}; i++)); do
index=$((${GR_index[$i]}*4))
ch="${GR_POS[$(($index+3))]}"
h=${GR_POS[$(($index))]}
v=${GR_POS[$(($index+1))]}
line="${data[$h]}"
line="${line:0:$(($v-1))}${ch}${line:$v}"
data[$h]="${line}"
done
cnt=${#grdata[@]}
for((i=0; i<${cnt}; i++)); do
if [ "$i" -eq "$((cnt-1))" ]; then
echo -n -e "${data[$i]}"
else
echo -e "${data[$i]}"
fi
done
waitforkey
echo ''
echo "$grh1"
echo '##############################################################################'
waitforkey
cnt=${#GR_index[@]}
for((i=0; i<${cnt}; i++)); do
index=$((${GR_index[$i]}*4))
ch="${GR_POS[$(($index+3))]}"
ch="$( width_itselfl "$ch" "2" )"
line="${GR_POS[$(($index+2))]}"
echo "${ch} - ${line}"
done
waitforkey
mingr_h="$(width_itselfl "$(format_ratio "${MAX_RATIO_BLOCK}" 1 )" 8)"
maxgr_h="$(width_itselfl "$(format_ratio "${MIN_RATIO_BLOCK}" 1 )" 8)"
echo '##############################################################################'
echo ''
echo '# QUADRANT GRAPH RATIO (by block count) ######################################'
grh="# <<< bad ${mingr_h} compression ratio ${maxgr_h} good >>> "
grh1="$grh"
waitforkey2
V_MIN="$( echo "scale=6; x=((${MAX_RATIO_BLOCK} - ${MIN_RATIO_BLOCK})/${GR_W}); if(x<0.000001) x=0.000001; x=(${REPORT_RATIO_MIN} - ${MIN_RATIO_BLOCK})/x; x=${GR_W}-x; y=${GR_W}+1; if(x < -1) x=-1; if(x > y) x=y; x=x + ${GR_WM}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )"
if [ "${V_MIN}" -eq "${V_SPLIT}" -o "${V_MIN}" -eq "$((${GR_WM}-1))" -o "${V_MIN}" -eq "$((${GR_W} + ${GR_WM}+1))" ]; then
pair=0
else
pair=2
fi
data=("${grdata[@]}")
graphlines
echo "$grh"
cnt=${#GR_index_block[@]}
for((i=0; i<${cnt}; i++)); do
index=$((${GR_index_block[$i]}*4))
ch="${GR_POS_block[$(($index+3))]}"
h=${GR_POS_block[$(($index))]}
v=${GR_POS_block[$(($index+1))]}
line="${data[$h]}"
line="${line:0:$(($v-1))}${ch}${line:$v}"
data[$h]="${line}"
done
cnt=${#grdata[@]}
for((i=0; i<${cnt}; i++)); do
if [ "$i" -eq "$((cnt-1))" ]; then
echo -n -e "${data[$i]}"
else
echo -e "${data[$i]}"
fi
done
waitforkey
echo ''
echo "$grh1"
echo '##############################################################################'
waitforkey
cnt=${#GR_index_block[@]}
for((i=0; i<${cnt}; i++)); do
index=$((${GR_index_block[$i]}*4))
ch="${GR_POS_block[$(($index+3))]}"
ch="$( width_itselfl "$ch" "2" )"
line="${GR_POS_block[$(($index+2))]}"
echo "${ch} - ${line}"
done
echo '##############################################################################'
#clean -----------------------
if [ "${LEAVE_COMP}" -eq "0" ]; then
rmdir "${TMP}/${TMPDIR}"
if [ "$?" -ne "0" ]; then
echo "CLEAN ERROR!, error delete '${TMP}/${TMPDIR}' directory." >&2
exit 2
fi
else
echo ""
echo "Warning (info):"
echo " Temoprary directory '${TMP}/${TMPDIR}' contains compressed files."
fi
echo ""
exit 0
Běžné spuštení pro test souborů všemi metodami a jejich kombinacemi:find /absolute/path/dir -type f | ./comptest.bash -v -n 42 -w /absolute/path/to/save/dir/result.res -f
find /absolute/path/dir -mindepth 1 -maxdepth 1 -type d | ./comptest.bash -v -n 'e0 1 4' -w /absolute/path/to/save/dir/result.res -d
./comptest.bash -o /absolute/path/to/save/dir/result.res./comptest.bash -o -R 0.8 -S 8388608 /absolute/path/to/save/dir/result.res./comptest.bash -t /directory/to/save/ -T noexistsdirname -L -n allbest1 -f /full/file/path/nameecho /full/dir/path/name | ./comptest.bash -t /directory/to/save/ -T noexistsdirname -L -n allbest1 -d
kill <PID toho testu>, snad se to zestřelí až po skončení právě testovaného souboru - po všech vybraných kompresích.)# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 82.41 % compression ratio 74.80 % good >>> # | 1 : | | # ^| : | | # ^| : | | # ^| : | | # | : | | # f| : | | # a| : | | # s| : | | # t| : | | # | : | | # s| : | | # p| : | | # e|-----------------------:------------+------------------------------------| # e| : | | # d| : | | # | : | | # s| : | | # l|7 4 : | | # o| : | | # w|~~~~~~~~~~~~5~~~~~~~~~~:~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # | 8 : | 2| # v| : | | # v| B : | 3 | # v| D 9 : | 6 | # | C : | A | # <<< bad 82.41 % compression ratio 74.80 % good >>> ############################################################################## 1 - [ gz -9 ] S: 9.49 MiB/sec; R: 81.09 %; RB: 81.09 % 2 - [ 7z.gz -txz -9 ] S: 3.65 MiB/sec; R: 74.80 %; RB: 74.80 % 3 - [ 7z ] S: 3.15 MiB/sec; R: 75.05 %; RB: 75.05 % 4 - [ gz.7z -txz -9 ] S: 4.39 MiB/sec; R: 80.41 %; RB: 80.41 % 5 - [ gz.bz2 -9 -9 ] S: 4.02 MiB/sec; R: 81.12 %; RB: 81.12 % 6 - [ 7z.bz2 -txz -9 ] S: 2.71 MiB/sec; R: 75.14 %; RB: 75.14 % 7 - [ bz2 -9 ] S: 4.40 MiB/sec; R: 82.41 %; RB: 82.41 % 8 - [ bz2.gz -9 -9 ] S: 3.71 MiB/sec; R: 82.34 %; RB: 82.34 % 9 - [ gz.bz2.7z -9 -9 -txz ] S: 2.79 MiB/sec; R: 81.12 %; RB: 81.12 % A - [ 7z.gz.bz2 -txz -9 -9 ] S: 2.54 MiB/sec; R: 75.15 %; RB: 75.15 % B - [ bz2.7z -9 -txz ] S: 2.95 MiB/sec; R: 82.33 %; RB: 82.33 % C - [ gz.7z.bz2 -9 -txz -9 ] S: 2.61 MiB/sec; R: 80.79 %; RB: 80.79 % D - [ bz2.gz.7z -9 -9 -txz ] S: 2.72 MiB/sec; R: 82.35 %; RB: 82.35 % D - [ bz2.7z.gz -9 -txz -9 ] S: 2.71 MiB/sec; R: 82.32 %; RB: 82.32 % A - [ 7z.bz2.gz -txz -9 -9 ] S: 2.47 MiB/sec; R: 75.14 %; RB: 75.14 % ##############################################################################Tady například velmi neefektivní stl data v ASCII verzi.
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 15.06 % compression ratio 8.47 % good >>> # : 6 | | # ^| | | # ^:8 | | # ^| 5 | | # : | | # f| | | # a: | | # s| | | # t: | | # | | | # s: 3 | | # p| 1 | | # e:------------------------------------+------------------------------------| # e| | 2 | # d: | | # | | | # s: | 4 | # l| | | # o: | | # w| | | # : | | # v| | 7 | # v: | 9 | # v|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~C~~~~~A~~~E~BD~~FG~~~~~~~~~~~| # : | H JI| # <<< bad 15.06 % compression ratio 8.47 % good >>> ############################################################################## 1 - [ gz -5 ] S: 33.05 MiB/sec; R: 11.95 %; RB: 12.04 % 2 - [ gz -6 ] S: 27.12 MiB/sec; R: 11.38 %; RB: 11.50 % 3 - [ gz -4 ] S: 35.60 MiB/sec; R: 12.82 %; RB: 12.91 % 4 - [ gz -7 ] S: 21.74 MiB/sec; R: 11.21 %; RB: 11.30 % 5 - [ gz -3 ] S: 51.91 MiB/sec; R: 13.99 %; RB: 14.06 % 6 - [ gz -2 ] S: 58.15 MiB/sec; R: 14.39 %; RB: 14.46 % 7 - [ gz -8 ] S: 9.84 MiB/sec; R: 10.96 %; RB: 11.03 % 8 - [ gz -1 ] S: 53.10 MiB/sec; R: 14.98 %; RB: 15.06 % 9 - [ gz.7z -txz -9 ] S: 7.31 MiB/sec; R: 10.96 %; RB: 11.03 % 9 - [ gz.bz2 -9 -9 ] S: 7.21 MiB/sec; R: 11.01 %; RB: 11.03 % 9 - [ gz -9 ] S: 6.51 MiB/sec; R: 10.95 %; RB: 11.03 % A - [ bz2 -1 ] S: 5.34 MiB/sec; R: 10.38 %; RB: 10.49 % 9 - [ gz.bz2.7z -9 -9 -txz ] S: 5.66 MiB/sec; R: 11.02 %; RB: 11.03 % B - [ bz2 -3 ] S: 4.91 MiB/sec; R: 9.84 %; RB: 9.95 % C - [ gz.7z.bz2 -9 -txz -9 ] S: 5.44 MiB/sec; R: 11.02 %; RB: 11.03 % D - [ bz2 -5 ] S: 4.62 MiB/sec; R: 9.73 %; RB: 9.82 % D - [ bz2 -4 ] S: 4.55 MiB/sec; R: 9.76 %; RB: 9.82 % E - [ bz2 -2 ] S: 4.70 MiB/sec; R: 10.02 %; RB: 10.15 % F - [ bz2 -7 ] S: 4.18 MiB/sec; R: 9.54 %; RB: 9.62 % G - [ bz2.gz -9 -9 ] S: 3.86 MiB/sec; R: 9.45 %; RB: 9.48 % G - [ bz2.7z -9 -txz ] S: 3.79 MiB/sec; R: 9.46 %; RB: 9.48 % F - [ bz2 -6 ] S: 3.77 MiB/sec; R: 9.56 %; RB: 9.62 % G - [ bz2 -9 ] S: 3.63 MiB/sec; R: 9.46 %; RB: 9.48 % G - [ bz2.7z.gz -9 -txz -9 ] S: 3.59 MiB/sec; R: 9.45 %; RB: 9.48 % F - [ bz2 -8 ] S: 3.49 MiB/sec; R: 9.55 %; RB: 9.62 % H - [ bz2.gz.7z -9 -9 -txz ] S: 3.15 MiB/sec; R: 9.45 %; RB: 9.48 % I - [ 7z.gz -txz -9 ] S: 2.87 MiB/sec; R: 8.40 %; RB: 8.47 % I - [ 7z ] S: 2.49 MiB/sec; R: 8.40 %; RB: 8.47 % J - [ 7z.bz2 -txz -9 ] S: 2.45 MiB/sec; R: 8.45 %; RB: 8.54 % J - [ 7z.bz2.gz -txz -9 -9 ] S: 2.43 MiB/sec; R: 8.45 %; RB: 8.54 % J - [ 7z.gz.bz2 -txz -9 -9 ] S: 2.15 MiB/sec; R: 8.46 %; RB: 8.54 % ##############################################################################Oproti stl v binárním formátu, kde 7z jasně vede (ne, že by na tom byl v předchozím nějak špatně, ale tak jasné to nebylo)
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 38.67 % compression ratio 20.10 % good >>> # : 3 | | # ^| | | # ^: | | # ^| 2 | | # : | | # f| 5 | | # a: | | # s| 1 | | # t: | | # | | | # s: 4 | | # p| | | # e:------------------------------------+------------------------------------| # e| 6 | | # d: | | # | 7 | | # s: | | # l| | | # o: | | # w| 8 | | # :O I F | | # v| EG D 9 | | # v:~~~~~~~~JL~~K~~~~~~~~~~~~~~~~~~A~~B~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # v| M C H | | # : | N| # <<< bad 38.67 % compression ratio 20.10 % good >>> ############################################################################## 1 - [ gz -4 ] S: 23.50 MiB/sec; R: 33.80 %; RB: 33.86 % 2 - [ gz -2 ] S: 28.88 MiB/sec; R: 35.27 %; RB: 35.33 % 3 - [ gz -1 ] S: 32.63 MiB/sec; R: 35.93 %; RB: 36.01 % 4 - [ gz -5 ] S: 19.94 MiB/sec; R: 33.49 %; RB: 33.56 % 5 - [ gz -3 ] S: 26.72 MiB/sec; R: 35.30 %; RB: 35.36 % 6 - [ gz -6 ] S: 16.11 MiB/sec; R: 33.46 %; RB: 33.51 % 7 - [ gz -7 ] S: 13.10 MiB/sec; R: 33.41 %; RB: 33.47 % 8 - [ gz -8 ] S: 7.69 MiB/sec; R: 33.31 %; RB: 33.39 % 9 - [ gz -9 ] S: 5.88 MiB/sec; R: 33.31 %; RB: 33.39 % A - [ gz.bz2 -9 -9 ] S: 4.33 MiB/sec; R: 30.61 %; RB: 30.71 % B - [ gz.7z -txz -9 ] S: 3.65 MiB/sec; R: 29.89 %; RB: 29.98 % C - [ gz.bz2.7z -9 -9 -txz ] S: 3.29 MiB/sec; R: 30.61 %; RB: 30.71 % D - [ bz2.gz -9 -9 ] S: 5.23 MiB/sec; R: 35.65 %; RB: 35.72 % E - [ bz2 -5 ] S: 5.86 MiB/sec; R: 36.49 %; RB: 36.55 % F - [ bz2 -4 ] S: 6.09 MiB/sec; R: 36.71 %; RB: 36.80 % E - [ bz2 -7 ] S: 5.67 MiB/sec; R: 36.42 %; RB: 36.50 % G - [ bz2 -8 ] S: 5.57 MiB/sec; R: 36.39 %; RB: 36.46 % F - [ bz2 -3 ] S: 6.17 MiB/sec; R: 36.94 %; RB: 36.99 % H - [ gz.7z.bz2 -9 -txz -9 ] S: 2.63 MiB/sec; R: 30.04 %; RB: 30.13 % I - [ bz2 -2 ] S: 6.09 MiB/sec; R: 37.63 %; RB: 37.66 % J - [ bz2 -6 ] S: 4.63 MiB/sec; R: 36.60 %; RB: 36.66 % K - [ bz2.7z.gz -9 -txz -9 ] S: 3.85 MiB/sec; R: 35.63 %; RB: 35.70 % L - [ bz2 -9 ] S: 4.30 MiB/sec; R: 36.30 %; RB: 36.38 % M - [ bz2.7z -9 -txz ] S: 3.28 MiB/sec; R: 35.65 %; RB: 35.74 % M - [ bz2.gz.7z -9 -9 -txz ] S: 3.25 MiB/sec; R: 35.65 %; RB: 35.72 % N - [ 7z.gz -txz -9 ] S: 1.80 MiB/sec; R: 20.00 %; RB: 20.10 % N - [ 7z ] S: 1.79 MiB/sec; R: 20.02 %; RB: 20.10 % O - [ bz2 -1 ] S: 6.07 MiB/sec; R: 38.63 %; RB: 38.67 % N - [ 7z.bz2 -txz -9 ] S: 1.64 MiB/sec; R: 20.11 %; RB: 20.21 % N - [ 7z.gz.bz2 -txz -9 -9 ] S: 1.57 MiB/sec; R: 20.11 %; RB: 20.21 % N - [ 7z.bz2.gz -txz -9 -9 ] S: 1.41 MiB/sec; R: 20.11 %; RB: 20.21 % ##############################################################################Oproti tomu jak se mu na specifických TIFF souborech až tak nedařilo (a na Jpeg souborech generoval decompresi místo comprese - zvětšoval filesy).
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 82.40 % compression ratio 66.49 % good >>> # | B : | | # ^| A : | | # ^| 8 : | | # ^| : | | # | : | | # f| C : | | # a| E : | | # s| D : | | # t| F : | | # | : | | # s| : | | # p| : | | # e|-----------:------------------------+------------------------------------| # e| : | | # d| : | | # | : | | # s| : | | # l| : | 312| # o| : | 6 54| # w| : | 7 | # |~~H~~~~~~~~:~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # v|I : | 9 | # v| : | | # v|K : | G | # | : | J | # <<< bad 82.40 % compression ratio 66.49 % good >>> ############################################################################## 1 - [ bz2 -3 ] S: 5.39 MiB/sec; R: 66.61 %; RB: 66.65 % 2 - [ bz2 -5 ] S: 5.27 MiB/sec; R: 66.51 %; RB: 66.53 % 3 - [ bz2 -2 ] S: 5.31 MiB/sec; R: 66.89 %; RB: 66.94 % 4 - [ bz2 -6 ] S: 5.11 MiB/sec; R: 66.49 %; RB: 66.52 % 4 - [ bz2 -4 ] S: 5.06 MiB/sec; R: 66.46 %; RB: 66.49 % 4 - [ bz2 -8 ] S: 4.98 MiB/sec; R: 66.54 %; RB: 66.58 % 5 - [ bz2 -9 ] S: 4.88 MiB/sec; R: 66.63 %; RB: 66.67 % 4 - [ bz2 -7 ] S: 4.80 MiB/sec; R: 66.53 %; RB: 66.57 % 6 - [ bz2 -1 ] S: 4.81 MiB/sec; R: 67.77 %; RB: 67.81 % 7 - [ bz2.gz -9 -9 ] S: 4.15 MiB/sec; R: 66.62 %; RB: 66.66 % 8 - [ gz -3 ] S: 14.64 MiB/sec; R: 80.95 %; RB: 80.98 % 9 - [ bz2.7z -9 -txz ] S: 3.34 MiB/sec; R: 66.63 %; RB: 66.68 % A - [ gz -2 ] S: 14.90 MiB/sec; R: 81.13 %; RB: 81.15 % 9 - [ bz2.7z.gz -9 -txz -9 ] S: 3.22 MiB/sec; R: 66.63 %; RB: 66.67 % B - [ gz -1 ] S: 15.52 MiB/sec; R: 81.38 %; RB: 81.42 % 9 - [ bz2.gz.7z -9 -9 -txz ] S: 3.07 MiB/sec; R: 66.63 %; RB: 66.67 % C - [ gz -5 ] S: 12.55 MiB/sec; R: 82.05 %; RB: 82.06 % D - [ gz -7 ] S: 11.44 MiB/sec; R: 82.01 %; RB: 82.05 % E - [ gz -4 ] S: 12.19 MiB/sec; R: 82.12 %; RB: 82.17 % F - [ gz -9 ] S: 11.10 MiB/sec; R: 82.00 %; RB: 82.03 % F - [ gz -6 ] S: 10.96 MiB/sec; R: 82.02 %; RB: 82.05 % F - [ gz -8 ] S: 10.78 MiB/sec; R: 82.01 %; RB: 82.04 % G - [ 7z ] S: 2.25 MiB/sec; R: 68.73 %; RB: 68.79 % G - [ 7z.gz -txz -9 ] S: 2.16 MiB/sec; R: 68.75 %; RB: 68.80 % H - [ gz.7z -txz -9 ] S: 3.99 MiB/sec; R: 82.01 %; RB: 82.03 % I - [ gz.bz2 -9 -9 ] S: 2.96 MiB/sec; R: 82.36 %; RB: 82.40 % J - [ 7z.gz.bz2 -txz -9 -9 ] S: 1.55 MiB/sec; R: 69.07 %; RB: 69.11 % J - [ 7z.bz2 -txz -9 ] S: 1.53 MiB/sec; R: 69.06 %; RB: 69.09 % K - [ gz.bz2.7z -9 -9 -txz ] S: 2.13 MiB/sec; R: 82.36 %; RB: 82.40 % K - [ gz.7z.bz2 -9 -txz -9 ] S: 2.02 MiB/sec; R: 82.36 %; RB: 82.40 % J - [ 7z.bz2.gz -txz -9 -9 ] S: 1.46 MiB/sec; R: 69.06 %; RB: 69.10 % ##############################################################################Ale zase na zdrojácích (c++)
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 30.87 % compression ratio 17.80 % good >>> # :7 | | # ^| | | # ^: | | # ^| 6 | | # : | | # f| 4 | | # a: | | # s| 2 | | # t: | | # | 1 | | # s: | | # p| | | # e:------------------------------------+------------------------------------| # e| 3 | | # d: 5 | | # | | | # s: | | # l| | | # o: | | # w| 8 | | # : | | # v| | | # v:~~~~~~~~~~~~~~G~~~~~~~~B~~9ACD~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # v| J KH EF | | # : M I | L| # <<< bad 30.87 % compression ratio 17.80 % good >>> ############################################################################## 1 - [ gz -5 ] S: 22.08 MiB/sec; R: 28.90 %; RB: 28.90 % 2 - [ gz -4 ] S: 25.01 MiB/sec; R: 29.39 %; RB: 29.39 % 3 - [ gz -6 ] S: 16.91 MiB/sec; R: 28.62 %; RB: 28.62 % 4 - [ gz -3 ] S: 26.84 MiB/sec; R: 29.94 %; RB: 29.95 % 5 - [ gz -7 ] S: 15.07 MiB/sec; R: 28.52 %; RB: 28.52 % 6 - [ gz -2 ] S: 30.40 MiB/sec; R: 30.40 %; RB: 30.40 % 7 - [ gz -1 ] S: 33.94 MiB/sec; R: 30.86 %; RB: 30.87 % 8 - [ gz -8 ] S: 8.39 MiB/sec; R: 28.37 %; RB: 28.37 % 9 - [ bz2 -2 ] S: 5.03 MiB/sec; R: 26.20 %; RB: 26.21 % A - [ bz2 -3 ] S: 4.70 MiB/sec; R: 26.00 %; RB: 26.00 % B - [ bz2 -1 ] S: 4.95 MiB/sec; R: 26.66 %; RB: 26.66 % C - [ bz2 -4 ] S: 4.39 MiB/sec; R: 25.86 %; RB: 25.86 % C - [ bz2 -5 ] S: 4.02 MiB/sec; R: 25.78 %; RB: 25.78 % D - [ bz2 -7 ] S: 3.93 MiB/sec; R: 25.63 %; RB: 25.63 % C - [ bz2 -6 ] S: 3.91 MiB/sec; R: 25.70 %; RB: 25.70 % E - [ bz2 -8 ] S: 3.77 MiB/sec; R: 25.60 %; RB: 25.60 % F - [ bz2.gz -9 -9 ] S: 3.22 MiB/sec; R: 25.44 %; RB: 25.44 % F - [ bz2 -9 ] S: 3.11 MiB/sec; R: 25.49 %; RB: 25.49 % G - [ gz -9 ] S: 4.00 MiB/sec; R: 28.33 %; RB: 28.33 % F - [ bz2.gz.7z -9 -9 -txz ] S: 2.51 MiB/sec; R: 25.44 %; RB: 25.44 % F - [ bz2.7z.gz -9 -txz -9 ] S: 2.49 MiB/sec; R: 25.44 %; RB: 25.44 % H - [ gz.7z -txz -9 ] S: 2.66 MiB/sec; R: 26.76 %; RB: 26.76 % I - [ bz2.7z -9 -txz ] S: 2.38 MiB/sec; R: 25.44 %; RB: 25.45 % J - [ gz.bz2 -9 -9 ] S: 2.85 MiB/sec; R: 28.31 %; RB: 28.32 % K - [ gz.7z.bz2 -9 -txz -9 ] S: 2.48 MiB/sec; R: 26.87 %; RB: 26.88 % L - [ 7z.gz -txz -9 ] S: 1.97 MiB/sec; R: 17.80 %; RB: 17.80 % L - [ 7z ] S: 1.90 MiB/sec; R: 17.84 %; RB: 17.84 % M - [ gz.bz2.7z -9 -9 -txz ] S: 2.22 MiB/sec; R: 28.31 %; RB: 28.32 % L - [ 7z.bz2 -txz -9 ] S: 1.83 MiB/sec; R: 17.88 %; RB: 17.88 % L - [ 7z.bz2.gz -txz -9 -9 ] S: 1.79 MiB/sec; R: 17.88 %; RB: 17.88 % L - [ 7z.gz.bz2 -txz -9 -9 ] S: 1.77 MiB/sec; R: 17.88 %; RB: 17.88 % ##############################################################################Jinak na VMWare adresáře virtuálních strojů je
7z i 10 % efektivnější než bz2 či gz.bc je vhodné dávat mezeru, protože XY=-5; echo "10-${XY}" | bc to nesežere.
Tiskni
Sdílej:
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 28.33 % compression ratio 16.58 % good >>> # :2 | | # ^| | | # ^:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # ^| | | # : | | # f| | | # a: | | # s| 1 | | # t: | | # | | | # s: | | # p| | | # e:------------------------------------+------------------------------------| # e| | | # d: | | # | | | # s: | | # l| | | # o: | | # w| | | # : | | # v| | | # v: | | # v| | | # : | 4 3| # <<< bad 28.33 % compression ratio 16.58 % good >>> ############################################################################## 1 - [ bz2 -9 ] S: 3.42 MiB/sec; R: 25.49 %; RB: 25.49 % 2 - [ gz -9 ] S: 4.27 MiB/sec; R: 28.33 %; RB: 28.33 % 3 - [ lrzip -L 9 ] S: 1.38 MiB/sec; R: 16.58 %; RB: 16.58 % 4 - [ rzip -9 ] S: 1.37 MiB/sec; R: 18.68 %; RB: 18.68 % ##############################################################################STL soubory (binární):
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 36.38 % compression ratio 20.46 % good >>> # : 1 | | # ^| | | # ^: | | # ^|2 | | # : | | # f| | | # a: | | # s| | | # t: | | # | | | # s: | | # p| | | # e:------------------------------------+------------------------------------| # e|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # d: | | # | | | # s: | | # l| | | # o: | | # w|3 | | # : | | # v| | | # v: | | # v| | | # : | 4| # <<< bad 36.38 % compression ratio 20.46 % good >>> ############################################################################## 1 - [ gz -9 ] S: 7.02 MiB/sec; R: 33.31 %; RB: 33.39 % 2 - [ bz2 -9 ] S: 6.28 MiB/sec; R: 36.30 %; RB: 36.38 % 3 - [ rzip -9 ] S: 2.52 MiB/sec; R: 36.26 %; RB: 36.34 % 4 - [ lrzip -L 9 ] S: 1.41 MiB/sec; R: 20.38 %; RB: 20.46 % ##############################################################################Virtuály zatím nemám :(, to chvíli trvá…
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 40.37 % compression ratio 25.89 % good >>> # :3 | | # ^| | | # ^: | | # ^| | | # : | | # f| | | # a: | | # s| | | # t: | | # | 2 | | # s: | | # p| | | # e:------------------------------------+------------------------------------| # e| | | # d: | | # |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # s: | | # l| | 1 | # o: | | # w| | | # : | | # v| | | # v: | | # v| | | # : | 4| # <<< bad 40.37 % compression ratio 25.89 % good >>> ############################################################################## 1 - [ rzip -9 ] S: 3.79 MiB/sec; R: 32.03 %; RB: 32.03 % 2 - [ bz2 -9 ] S: 4.79 MiB/sec; R: 38.55 %; RB: 38.55 % 3 - [ gz -9 ] S: 5.89 MiB/sec; R: 40.37 %; RB: 40.37 % 4 - [ lrzip -L 9 ] S: 2.95 MiB/sec; R: 25.89 %; RB: 25.89 % ##############################################################################
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 100.25 % compression ratio 99.17 % good >>> # | | 1 : # ^| | | # ^| | 2 : # ^| | 4 | # | | 53 : # f| | | # a| | : # s| | 6 | # t| | : # | | 7 | # s| | : # p| | 8 | # e|------------------------------------+------------------------------------: # e| | | # d| | 9 : # | | | # s| | : # l| | | # o| | : # w|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # | | H D C A : # v| M | E G B F| # v|O |LKI : # v| | N J| # | |PQ R : # <<< bad 100.25 % compression ratio 99.17 % good >>> ############################################################################## 1 - [ gz -3 ] S: 14.14 MiB/sec; R: 99.65 %; RB: 99.65 % 2 - [ gz -2 ] S: 13.27 MiB/sec; R: 99.65 %; RB: 99.65 % 3 - [ gz -1 ] S: 12.20 MiB/sec; R: 99.66 %; RB: 99.66 % 4 - [ gz -6 ] S: 12.32 MiB/sec; R: 99.68 %; RB: 99.67 % 5 - [ gz -8 ] S: 12.09 MiB/sec; R: 99.68 %; RB: 99.67 % 6 - [ gz -4 ] S: 10.59 MiB/sec; R: 99.68 %; RB: 99.67 % 7 - [ gz -9 ] S: 9.28 MiB/sec; R: 99.68 %; RB: 99.67 % 8 - [ gz -7 ] S: 8.23 MiB/sec; R: 99.68 %; RB: 99.67 % 9 - [ gz -5 ] S: 6.84 MiB/sec; R: 99.68 %; RB: 99.67 % A - [ bz2 -7 ] S: 3.62 MiB/sec; R: 99.25 %; RB: 99.25 % B - [ bz2 -8 ] S: 3.25 MiB/sec; R: 99.21 %; RB: 99.21 % C - [ bz2 -4 ] S: 3.50 MiB/sec; R: 99.42 %; RB: 99.42 % D - [ bz2 -3 ] S: 3.73 MiB/sec; R: 99.51 %; RB: 99.51 % E - [ bz2 -5 ] S: 3.19 MiB/sec; R: 99.36 %; RB: 99.36 % F - [ bz2 -9 ] S: 2.90 MiB/sec; R: 99.18 %; RB: 99.17 % F - [ bz2.gz -9 -9 ] S: 2.80 MiB/sec; R: 99.17 %; RB: 99.17 % G - [ bz2 -6 ] S: 2.85 MiB/sec; R: 99.30 %; RB: 99.30 % H - [ bz2 -2 ] S: 3.50 MiB/sec; R: 99.65 %; RB: 99.64 % I - [ gz.bz2 -9 -9 ] S: 2.71 MiB/sec; R: 99.68 %; RB: 99.67 % J - [ bz2.7z.gz -9 -txz -9 ] S: 2.17 MiB/sec; R: 99.18 %; RB: 99.18 % K - [ gz.7z -txz -9 ] S: 2.69 MiB/sec; R: 99.68 %; RB: 99.68 % L - [ 7z.gz -txz -9 ] S: 2.67 MiB/sec; R: 99.70 %; RB: 99.70 % M - [ bz2 -1 ] S: 3.29 MiB/sec; R: 99.92 %; RB: 99.92 % J - [ bz2.7z -9 -txz ] S: 2.07 MiB/sec; R: 99.18 %; RB: 99.18 % J - [ bz2.gz.7z -9 -9 -txz ] S: 1.97 MiB/sec; R: 99.18 %; RB: 99.18 % N - [ gz.bz2.7z -9 -9 -txz ] S: 1.86 MiB/sec; R: 99.68 %; RB: 99.68 % O - [ 7z ] S: 2.65 MiB/sec; R: 100.25 %; RB: 100.25 % P - [ 7z.gz.bz2 -txz -9 -9 ] S: 1.61 MiB/sec; R: 99.70 %; RB: 99.70 % Q - [ gz.7z.bz2 -9 -txz -9 ] S: 1.59 MiB/sec; R: 99.68 %; RB: 99.68 % R - [ 7z.bz2 -txz -9 ] S: 1.53 MiB/sec; R: 99.39 %; RB: 99.39 % R - [ 7z.bz2.gz -txz -9 -9 ] S: 1.48 MiB/sec; R: 99.39 %; RB: 99.39 % ##############################################################################7zip soubory zvětšuje
. Kdo nehrotí normy a netrápí ho pohoršené pohledy puristů, nemá problém
. Ale napsal bych v bashi.